目录

Linux 常用命令

grep 命令

grep 命令的使用指南

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
grep [选项] 模式 文件

-i:忽略大小写区别
-r 或 -R:递归搜索目录
-n:显示匹配行及行号
-v:显示不包含匹配文本的所有行
-c:仅显示匹配行的计数
-l:列出包含匹配文本的文件名称
-w:匹配整个单词
-A n:显示匹配行及后n行内容
-B n:显示匹配行及前n行内容
-C n:显示匹配行及前后各n行内容

Linux命令,查找100个⽂本⽂件,将含有abc字段⾏数统计出来

grep -r "abc" /path/to/directory/* | head -100 | wc -l

grep命令可搭配 wc -l 命令使用,后者是统计次数的


wc命令

wc命令是一个用于统计文件中字节数、字数、行数的命令,它的名称代表"word count"。下面是wc命令的详细说明:

1
2
3
4
5
wc [选项] 文件名

-c:统计字节数
-w:统计单词数
-l:统计行数

find命令

find 命令是在 Linux 系统中用于查找文件和目录的强大工具。它可以根据指定的条件在指定路径下进行搜索,并匹配相应的文件或目录。下面是关于 find 命令的详细说明:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
find <路径> <匹配条件> <操作>

匹配条件:
-name:按照文件名进行匹配,可以使用通配符进行模糊匹配

-iname:类似于 -name,但是不区分大小写

-type:按照文件类型进行匹配,比如 -type f 匹配普通文件,-type d 匹配目录

-size:按照文件大小进行匹配,可以指定大于、小于或等于某个特定大小 +是大于,-是小于

-user:按照文件属主进行匹配

-group:按照文件所属组进行匹配

-mtime:按照文件内容修改时间进行匹配,可以指定相对天数或具体日期

-ctime:按照文件状态改变时间进行匹配,包括文件权限、属主等改变

-atime:按照文件最后访问时间进行匹配

-perm:按照文件权限进行匹配,可以指定具体权限值或权限组合

-executable:匹配可执行文件

-empty:匹配空文件或空目录

-regex:使用正则表达式进行文件名匹配

操作:
-print:将匹配到的文件名输出到标准输出(通常是显示在终端上)

-delete:删除匹配到的文件或目录。需要谨慎使用,因为删除的操作是不可逆的

-exec command {} ;:对匹配到的每个文件执行特定的命令。其中 {} 会被替换为匹配到的文件名,\; 表示命令结束

-exec command {} +:与 -exec command {} \; 类似,但是会将多个文件名一起传递给 command 命令,以提高效率

-ok command {} ;:与 -exec 类似,但在执行命令之前会先询问用户是否确认执行

-okdir command {} ;:类似于-ok,但只对目录执行操作而不是文件

-prune:停止find命令在当前目录下继续搜索,避免进入匹配到的目录中继续搜索

kill 命令

kill 命令用于终止正在运行的进程。它向指定的进程发送信号,通知该进程终止或者进行其他操作。下面是关于 kill 命令的一些详细信息和其底层原理:

基本用法:kill 命令的基本用法是 kill [signal] PID,其中signal是要发送的信号类型(通常是数字或信号名),PID是要终止的进程的进程ID。

信号类型:常用的信号类型包括:

SIGTERM(15):默认信号,请求进程正常终止。 SIGKILL(9):强制终止信号,立即终止进程。 其他信号如SIGHUP、SIGINT等,用于不同的目的。 底层原理:在 Linux 系统中,进程间通信通过信号来实现。当使用 kill 命令时,实际上是向目标进程发送一个信号,让目标进程做出相应的处理。具体原理如下:

kill 命令会向指定进程发送一个信号,可以是终止信号或其他信号。 目标进程收到信号后,根据信号的类型进行相应的处理。比如,收到SIGTERM信号时,进程可以进行清理工作后正常退出;收到SIGKILL信号时,进程会被强制终止,无法做任何处理。 进程可以注册信号处理函数来处理收到的信号,也可以选择忽略某些信号。

一些常见信号的含义

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
SIGHUP (1):终端挂起或控制进程终止
SIGINT (2):用户发送的中断信号,通常由按下 Ctrl + C 触发
SIGQUIT (3):用户发送的退出信号,通常由按下 Ctrl + \ 触发
SIGILL (4):非法指令
SIGABRT (6):异常终止
SIGFPE (8):浮点异常
SIGKILL (9):无条件终止进程
SIGSEGV (11):段错误,访问了无效的内存地址
SIGPIPE (13):管道破裂
SIGALRM (14):定时器超时
SIGTERM (15):终止信号,用于请求进程正常终止
SIGUSR1 (30) 和 SIGUSR2 (31):用户自定义信号

ss命令

ss 命令是一个用于显示套接字统计信息的工具,其名称源自 “Socket Statistics”。它可以显示有关套接字(sockets)的各种详细信息,包括网络连接、路由表、接口统计等。ss 命令是 net-tools 套件的一部分,它逐渐替代了老旧的 netstat 命令。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
-t, --tcp:仅显示 TCP 套接字信息
ss -t

-u, --udp:仅显示 UDP 套接字信息
ss -u

-l, --listening:仅显示监听套接字信息
ss -l

-p, --processes:显示与套接字相关联的进程信息
ss -p

-x, --unix:显示 UNIX 域套接字信息
ss -x

-s, --summary:显示各种计时器信息、套接字统计和路由表统计
ss -s

-a, --all:显示所有套接字信息,包括监听和非监听的套接字
ss -a

-n, --numeric:以数字形式显示 IP 地址和端口号,而不进行反向解析
ss -n

netstat命令

netstat 是一个用于显示网络状态信息的命令行工具,可以用来查看网络连接、路由表、接口统计等网络相关信息:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
netstat [选项] [参数]

常用的选项包括:

-t, --tcp:显示 TCP 协议相关的连接信息
-u, --udp:显示 UDP 协议相关的连接信息
-n, --numeric:直接显示 IP 地址和端口号,而不进行域名解析
-a, --all:显示所有连接信息,包括正在监听的服务
-r, --route:显示路由表信息
-i, --interfaces:显示网络接口信息
-s, --statistics:显示网络协议统计信息
-p, --program:显示与连接相关的进程信息
-c, --continuous:持续显示网络状态信息

例如,要显示所有 TCP 连接信息,可以使用命令 netstat -t;要显示所有连接信息并显示进程信息,可以使用命令 netstat -ap

iptables 命令

iptables 是一个用于配置 Linux 内核防火墙的命令行工具,可以帮助用户管理网络数据包的过滤、转发和地址转换等功能。通过配置 iptables 规则,管理员可以控制网络数据包在系统内部的流动,实现网络访问控制、端口转发、NAT 网络地址转换等功能。以下是 iptables 命令的一些常见用途和功能:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
iptables 命令的使用格式和参数如下所示:

iptables [选项] 命令 [链名] 规则规范

其中,选项可以是以下之一或多个组合:

-t, --table table_name:指定要操作的表(filter、nat、mangle、raw、security)
-A, --append chain rule-specification:向指定链末尾添加规则
-I, --insert chain [rulenum] rule-specification:向指定链的指定位置插入规则
-D, --delete chain rule-specification:删除指定链上的规则
-R, --replace chain rulenum rule-specification:替换指定链上的规则
-L, --list [chain]:列出指定链的所有规则
-F, --flush [chain]:清空指定链上的所有规则
-Z, --zero [chain [rulenum]]:将指定链上的计数器归零
-N, --new-chain chain:创建一个新的用户自定义链
-X, --delete-chain [chain]:删除指定链,如果不指定链名则删除所有用户自定义链
-P, --policy chain target:设置指定链的默认策略
-h, --help:显示帮助信息

在命令部分,常用的命令包括:

-A, --append:添加规则到指定链
-D, --delete:删除指定链上的规则
-I, --insert:插入规则到指定链的指定位置
-R, --replace:替换指定链上的规则

链名可以是以下之一:

INPUT:处理传入的数据包
OUTPUT:处理传出的数据包
FORWARD:处理转发的数据包
PREROUTING:处理数据包进入路由前
POSTROUTING:处理数据包离开路由后

规则规范是指具体的规则定义,包括匹配条件和动作。例如,-s 源地址 -d 目标地址 -p 协议 --sport 源端口 --dport 目标端口 -j 动作

nohup命令

nohup 命令用于在后台运行命令,同时忽略 SIGHUP (挂断)信号,使得命令在用户退出登录后仍然可以继续执行。下面是 nohup 命令的详细用法:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
nohup COMMAND [ARG]... &

COMMAND:要执行的命令或脚本
[ARG]...:命令的参数
&:将命令放入后台运行

运行一个简单的命令,并将其放到后台运行:
nohup command_to_run &

运行一个带参数的命令,并将其放到后台运行:
nohup command_to_run arg1 arg2 &

将一个长时间运行的任务放到后台,并保存输出到指定文件:
nohup long_running_command > output.log &

将一个 Python 脚本放到后台运行:
nohup python script.py arg1 arg2 &

top命令

top 命令是一个常用的系统监控工具,用于实时显示系统中运行的进程的相关信息,如 CPU 占用率、内存占用情况、进程运行状态等

功能和用途:

  • 实时显示系统中运行的进程信息,按照 CPU 占用率或内存占用率进行排序
  • 提供关于系统负载、内存使用情况、进程状态等方面的快速概览
  • 允许用户对进程进行交互式操作,如终止进程、切换排序方式等

主要显示信息:

  • 第一行:系统时间、运行时间、登录用户数、系统负载(1分钟、5分钟、15分钟)
  • 进程列表:每个进程一行,列出进程 ID、用户、优先级、虚拟内存、物理内存、共享内存、状态、CPU 占用率、内存占用率等
  • 总体情况:系统 CPU 使用情况、内存使用情况等

常用交互命令:

  • q:退出 top 命令。
  • k:终止指定 PID 的进程。
  • r:修改指定 PID 进程的优先级
  • Space:切换排序方式(按 CPU 占用率或内存占用率)
  • 1:显示单个 CPU 的使用情况
  • H:将线程显示/隐藏

示例用法:

  • 运行 top 命令后,即可实时查看系统中运行的进程信息,并根据需要进行交互操作
  • 可以通过 top -u username 来显示特定用户的进程信息
  • 通过 top -p PID 来监视指定进程的运行情况

htop命令

htop 是一个类似于 top 的系统监控工具,提供了比 top 更丰富的功能和更直观的界面,使用户更容易理解系统的运行情况。下面是对 htop 命令的详细解释以及它的用法:

功能和用途:

  • 实时显示系统中运行的进程信息,包括 CPU 占用率、内存占用情况、进程状态、进程树等
  • 提供交互式界面,支持鼠标操作和键盘快捷键,更方便用户查看和管理进程
  • 显示颜色化的信息,让用户更直观地了解系统状况

主要特点:

  • 直观界面:使用彩色显示,直观明了
  • 交互式操作:支持鼠标点击和键盘快捷键操作,方便用户进行选择和操作
  • 更多信息:显示更多关于进程的详细信息,如进程树、线程数等
  • 滚动查看:支持上下滚动,方便查看较长的进程列表

常用交互操作:

  • 使用箭头键:上下移动选中的进程
  • F1:显示帮助文档
  • F2:设置参数,如显示选项、排序方式等
  • F3:通过关键字搜索进程
  • F4:筛选进程
  • F9:杀死选中的进程
  • F10:退出 htop

示例用法:

  • 运行 htop 命令后,会打开一个交互式的界面,实时显示系统中各个进程的信息
  • 可以通过键盘快捷键和鼠标操作来查看和管理进程,如杀死进程、改变优先级等
  • 在 htop 中也可以自定义显示选项、排序方式,以及筛选条件,以满足不同需求

Linux系统下各个目录的作用

/bin(二进制文件)

存放系统启动和运行时必需的基本命令,如 ls、cp、mv 等 这些命令通常被所有用户和系统启动脚本所使用

/boot(引导文件)

包含用于系统引导的内核文件、引导加载程序(如 GRUB)、以及引导时所需的配置文件 在系统启动过程中会使用这里的文件

/dev(设备文件)

包含系统中所有硬件设备的设备文件,如磁盘、终端、打印机等 Linux 将硬件设备都视为文件,通过与这些设备文件的交互实现对硬件设备的控制和访问

/etc(配置文件)

存放系统全局的配置文件,包括网络配置、用户账户信息、服务的启动脚本等 用户和管理员可以在这里修改系统的各种配置

/home(用户主目录)

每个用户的主目录都位于这个目录下,例如 /home/user1、/home/user2 用户通常在自己的主目录下存放个人文件和配置

/lib(库文件)

包含系统运行时需要的共享库文件,这些库文件可以被可执行程序动态链接 供系统中的程序在运行时调用

/mnt(挂载点)

用于临时挂载其他文件系统的目录,如光盘、移动硬盘等 系统管理员可以将外部设备挂载到这个目录下进行访问

/opt(可选应用程序)

用于存放可选的、不属于发行版本管理的应用程序 一些第三方软件或升级软件包可能会安装到这个目录

/tmp(临时文件)

存放系统运行过程中产生的临时文件 重启系统时通常会清空该目录下的文件

/var(可变数据)

包含系统运行过程中产生的变化数据,如日志文件、邮件、打印队列等 用于存放那些在系统运行时可能会频繁变化的数据

系统日志存放在 /var/log 路径下