Linux常用命令介绍-系统管理
2025-08-22 16:06:38,

find命令 - 根据路径和条件搜索指定文件

ind命令的功能是根据给定的路径和条件查找相关文件或目录,其参数灵活方便,且支持正则表达式,结合管道符后能够实现更加复杂的功能,是Linux系统运维人员必须掌握的命令之一。

find命令通常进行的是从根目录(/)开始的全盘搜索,有别于whereis、which、locate等有条件或部分文件的搜索。对于服务器负载较高的情况,建议不要在高峰时期使用find命令的模糊搜索,这会相对消耗较多的系统资源。

语法格式

find [路径] [匹配条件] [动作]

参数说明 :

路径 是要查找的目录路径,可以是一个目录或文件名,也可以是多个路径,多个路径之间用空格分隔,如果未指定路径,则默认为当前目录。

Expression 是可选参数,用于指定查找的条件,可以是文件名、文件类型、文件大小等等。

匹配条件 中可使用的选项有二三十个之多,以下列出最常用的部份:

  • -name pattern:按文件名查找,支持使用通配符 *?
  • -type type:按文件类型查找,可以是 f(普通文件)、d(目录)、l(符号链接)等。
  • -size [+-]size[cwbkMG]:按文件大小查找,支持使用 +- 表示大于或小于指定大小,单位可以是 c(字节)、w(字数)、b(块数)、k(KB)、M(MB)或 G(GB)。
  • -mtime days:按修改时间查找,支持使用 +- 表示在指定天数前或后,days 是一个整数表示天数。
  • -user username:按文件所有者查找。
  • -group groupname:按文件所属组查找。

动作: 可选的,用于对匹配到的文件执行操作,比如删除、复制等。

find 命令中用于时间的参数如下:

  • -amin n:查找在 n 分钟内被访问过的文件。
  • -atime n:查找在 n*24 小时内被访问过的文件。
  • -cmin n:查找在 n 分钟内状态发生变化的文件(例如权限)。
  • -ctime n:查找在 n*24 小时内状态发生变化的文件(例如权限)。
  • -mmin n:查找在 n 分钟内被修改过的文件。
  • -mtime n:查找在 n*24 小时内被修改过的文件。

在这些参数中,n 可以是一个正数、负数或零。正数表示在指定的时间内修改或访问过的文件,负数表示在指定的时间之前修改或访问过的文件,零表示在当前时间点上修改或访问过的文件。

正数应该表示时间之前,负数表示时间之内。

例如:-mtime 0 表示查找今天修改过的文件,-mtime -7 表示查找一周以前修改过的文件。

关于时间 n 参数的说明:

  • +n:查找比 n 天前更早的文件或目录。
  • -n:查找在 n 天内更改过属性的文件或目录。
  • n:查找在 n 天前(指定那一天)更改过属性的文件或目录。

实例

查找当前目录下名为 file.txt 的文件:

find . -name file.txt

将当前目录及其子目录下所有文件后缀为 .c 的文件列出来:

find . -name "*.c"

将当前目录及其子目录中的所有文件列出:

find . -type f

查找 /home 目录下大于 1MB 的文件:

find /home -size +1M

查找 /var/log 目录下在 7 天前修改过的文件:

find /var/log -mtime +7

查找过去 7 天内被访问的文件:

find /path/to/search -atime -7

在当前目录下查找最近 20 天内状态发生改变的文件和目录:

find . -ctime  20

将当前目录及其子目录下所有 20 天前及更早更新过的文件列出:

find . -ctime  +20

查找 /var/log 目录中更改时间在 7 日以前的普通文件,并在删除之前询问它们:

find /var/log -type f -mtime +7 -ok rm {} \;

查找当前目录中文件属主具有读、写权限,并且文件所属组的用户和其他用户具有读权限的文件:

find . -name file.txt
0

查找系统中所有文件长度为 0 的普通文件,并列出它们的完整路径:

find . -name file.txt
1

找并执行操作(例如删除):

find . -name file.txt
2

这个例子中,-exec 选项允许你执行一个命令,{} 将会被匹配到的文件名替代,; 表示命令结束。

rpm命令 - RPM软件包管理器

rpm命令来自英文词组redhat package manager的缩写,中文译为“红帽软件包管理器”,其功能是在Linux系统下对软件包进行安装、卸载、查询、验证、升级等工作,常见的主流系统(如RHEL、CentOS、Fedora等)都采用这种软件包管理器,推荐用固定搭配“rpm-ivh 软件包名”安装软件,而卸载软件则用固定搭配“rpm -evh 软件包名”,简单好记又好用。

语法格式

find . -name file.txt
3

常用参数

  • -a :查询所有套件。
  • -b<完成阶段><套件档>+或-t <完成阶段><套件档>+ :设置包装套件的完成阶段,并指定套件档的文件名称。
  • -c :只列出组态配置文件,本参数需配合"-l"参数使用。
  • -d :只列出文本文件,本参数需配合"-l"参数使用。
  • -e<套件档>或--erase<套件档> :删除指定的套件。
  • -f<文件>+ :查询拥有指定文件的套件。
  • -h或--hash :套件安装时列出标记。
  • -i :显示套件的相关信息。
  • -i<套件档>或--install<套件档> :安装指定的套件档。
  • -l :显示套件的文件列表。
  • -p<套件档>+ :查询指定的RPM套件档。
  • -q :使用询问模式,当遇到任何问题时,rpm指令会先询问用户。
  • -R :显示套件的关联性信息。
  • -s :显示文件状态,本参数需配合"-l"参数使用。
  • -U<套件档>或--upgrade<套件档> :升级指定的套件档。
  • -v :显示指令执行过程。
  • -vv :详细显示指令执行过程,便于排错。

实例

安装软件

find . -name file.txt
4

显示软件安装信息

find . -name file.txt
5

ps命令 - 显示进程状态

ps命令来自英文单词process的缩写,中文译为“进程”,其功能是显示当前系统的进程状态。使用ps命令可以查看到进程的所有信息,例如进程的号码、发起者、系统资源(处理器与内存)使用占比、运行状态等。ps命令可帮助我们及时发现哪些进程出现“僵死”或“不可中断”等异常情‍况。 ps命令经常会与kill命令搭配使用,以中断和删除不必要的服务进程,避免服务器的资源浪费。

语法格式:

find . -name file.txt
6

ps 的参数非常多, 在此仅列出几个常用的参数并大略介绍含义

  • -A:列出所有的进程

  • -w :显示加宽可以显示较多的资讯

  • -au :显示较详细的资讯

  • -aux :显示所有包含其他使用者的进程,用标准格式输出。

  • -ef:与aux一样,但是是用bsd的格式输出

    au(x) :输出格式 :

find . -name file.txt
7
  • USER: 进程拥有者
  • PID: pid,进程ID
  • %CPU: 占用的 CPU 使用率
  • %MEM: 占用的内存使用率
  • VSZ: 占用的虚拟内存大小,表示如果一个程序完全驻留在内存的话需要占用多少内存空间
  • RSS: 常驻集大小,指明了当前实际占用了多少内存
  • TTY: 终端的次要装置号码 (minor device number of tty)
  • STAT: 该行程的状态:
    • D: 无法中断的休眠状态 (通常 IO 的进程)
    • R: 正在执行中
    • S: 静止状态
    • T: 暂停执行
    • Z: 不存在但暂时无法消除
    • W: 没有足够的记忆体分页可分配
    • <: 高优先序的行程
    • N: 低优先序的行程
    • L: 有记忆体分页分配并锁在记忆体内 (实时系统或捱A I/O)
  • START: 进程开始时间
  • TIME: 执行的时间
  • COMMAND:所执行的指令

实例

查找指定进程格式:

find . -name file.txt
8

例如显示 PHP 的进程:

find . -name file.txt
9

显示进程信息:

find . -name "*.c"
0

显示指定用户信息

find . -name "*.c"
1

显示所有进程信息,连同命令行

find . -name "*.c"
2

uname命令 - 显示系统内核信息

uname命令来自英文词组UNIX name的缩写,其功能是查看系统主机名、内核及硬件架构等信息。如果不加任何参数,默认仅显示系统内核名称(相当于-s参数)的作用。

语法格式

find . -name "*.c"
3

常用参数:

  • -a 或--all  显示全部的信息,包括内核名称、主机名、操作系统版本、处理器类型和硬件架构等。。
  • -m 或--machine  显示处理器类型。
  • -n 或--nodename  显示主机名。
  • -r 或--release  显示内核版本号。
  • -s 或--sysname  显示操作系统名称。
  • -v  显示操作系统的版本。
  • --help  显示帮助。
  • --version  显示版本信息。
  • -p 显示处理器类型(与 -m 选项相同)。

实例

显示系统信息:

find . -name "*.c"
4

显示计算机类型:

find . -name "*.c"
5

显示计算机名:

find . -name "*.c"
6

显示操作系统发行编号:

find . -name "*.c"
7

显示操作系统名称:

find . -name "*.c"
8

显示系统版本与时间:

find . -name "*.c"
9

kill命令 - 杀死进程

kill命令的功能是杀死(结束)进程。Linux系统中如需结束某个进程,既可以使用如service或systemctl这样的管理命令来结束服务,也可以使用kill命令直接结束进程信息。 如使用kill命令后进程并没有结束,则可以使用信号9进行强制杀死动作。

语法格式

find . -type f
0

常用参数:

  • -l:列出所有可用的信号。
  • -<signal>:发送特定的信号给目标进程,如 -9 表示发送 KILL 信号,即强制终止进程。

实例

终止进程:默认情况下,kill命令发送SIGTERM(信号15),这可以请求进程终止。如果进程没有捕获这个信号,它将被终止。

find . -type f
1

其中 PID 是进程的 ID。

发送指定信号:通过 -s 选项可以发送指定的信号。

find . -type f
2

例如,发送 SIGKILL(信号9)将立即结束进程,不能被忽略或捕获。

find . -type f
3

杀死进程组:使用 -9 选项可以杀死整个进程组。

find . -type f
4

使用 kill -l 命令列出所有可用信号。

最常用的信号是:

  • SIGKILL(信号9):立即结束进程,不能被捕获或忽略。
  • SIGTERM(信号15):正常结束进程,可以被捕获或忽略。
  • SIGSTOP(信号19):暂停进程,不能被捕获、忽略或结束。
  • SIGCONT(信号18):继续执行被暂停的进程。
  • SIGINT(信号2):通常是Ctrl+C产生的信号,可以被进程捕获或忽略。

如:

终止 PID 为 1234 的进程:

find . -type f
5

强制终止 PID 为 1234 的进程:

find . -type f
6

向 PID 为 1234 的进程发送 SIGSTOP:

find . -type f
7

显示信号

find . -type f
8

杀死指定用户所有进程:

find . -type f
9

注意事项:

  • 在使用 kill 命令时,需要具有相应的权限,否则可能无法终止进程。
  • 某些进程可能需要发送多次信号才能终止,比如一些守护进程。
  • 强制杀死进程可能会导致数据丢失或其他副作用,因此应谨慎使用。

top命令 - 实时监控

Linux top 是一个在 Linux 和其他类 Unix 系统上常用的实时系统监控工具。它提供了一个动态的、交互式的实时视图,显示系统的整体性能信息以及正在运行的进程的相关信息。。

语法格式

find /home -size +1M
0

参数说明

  • -d <秒数>:指定 top 命令的刷新时间间隔,单位为秒。
  • -n <次数>:指定 top 命令运行的次数后自动退出。
  • -p <进程ID>:仅显示指定进程ID的信息。
  • -u <用户名>:仅显示指定用户名的进程信息。
  • -H:在进程信息中显示线程详细信息。
  • -i:不显示闲置(idle)或无用的进程。
  • -b:以批处理(batch)模式运行,直接将结果输出到文件。
  • -c:显示完整的命令行而不截断。
  • -S:累计显示进程的 CPU 使用时间。

显示信息

top 命令的一些常用功能和显示信息:

总体系统信息

  • 第一行信息:

    • 当前时间:15:08:39
    • 系统远行时间:28天5时35分
    • 当前登陆用户数: 1
    • 系统负载,即任务队列的平均长度。 三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值
  • 第二行信息:

    • 进程总数:527
    • 正在运行的进程数:2
    • 睡眠的进程数:525
    • 停止的进程数:0
    • 僵尸进程数:0
  • 第三行信息:

    • us:用户空间占用CPU百分比
    • sy:内核空间占用CPU百分比
    • ni:用户进程空间内改变过优先级的进程占用CPU百分比
    • id:空闲CPU百分比
    • wa:等待输入输出的CPU时间百分比
    • hi:硬中断(Hardware IRQ)占用CPU的百分比
    • si:软中断(Software Interrupts)占用CPU的百分比
    • st:用于有虚拟cpu的情况,用来指示被虚拟机偷掉的cpu时间
  • 第四行信息:

    • 物理内存总量
    • 使用的物理内存总量
    • 空闲内存总量
    • 用作内核缓存的内存量
  • 第五行信息:

    • 交换区总量
    • 使用的交换区总量
    • 空闲交换区总量
    • 缓冲的交换区总量
系统负载load average的含义

load average显示的是最近1分钟、5分钟和15分钟的系统平均负载。系统平均负载被定义为在特定时间间隔内运行队列中(在CPU上运行或者等待运行多少进程)的平均进程数。load average数据是每隔5秒钟检查一次活跃的进程数,然后按特定算法计算出的数值。

如果一个进程满足以下条件则其就会位于运行队列中:

  • 它没有在等待I/O操作的结果
  • 它没有主动进入等待状态(也就是没有调用’wait’)
  • 没有被停止(例如:等待终止)

Update:在Linux中,进程分为三种状态,一种是阻塞的进程blocked process,一种是可运行的进程runnable process,另外就是正在运行的进程running process。当进程阻塞时,进程会等待I/O设备的数据或者系统调用。

进程可运行状态时,它处在一个运行队列run queue中,与其他可运行进程争夺CPU时间。 系统的load是指正在运行running one和准备好运行runnable one的进程的总数。比如现在系统有2个正在运行的进程,3个可运行进程,那么系统的load就是5。load average就是一定时间内的load数量。

一般来说只要每个CPU的当前活动进程数不大于3那么系统的性能就是良好的,如果这个数除以逻辑CPU的数量,结果高于5的时候就表明系统在超负荷运转了。假设系统有两个CPU,load average为8.13,那么其每个CPU的当前任务数为:8.13/2=4.065。这表示该系统的性能是可以接受的。

这个具体场景具体分析。也有很多地方认为每个CPU满载是1,1是理想状态,只有负载小等于1 才认为系统性能是健康的。

进程信息

  • PID:进程的标识符。
  • USER:运行进程的用户名。
  • PR(优先级):进程的优先级。
  • NI(Nice值):进程的优先级调整值。
  • VIRT(虚拟内存):进程使用的虚拟内存大小。
  • RES(常驻内存):进程实际使用的物理内存大小。
  • SHR(共享内存):进程共享的内存大小。
  • %CPU:进程占用 CPU 的使用率。
  • %MEM:进程占用内存的使用率。
  • TIME+:进程的累计 CPU 时间。

功能和交互操作

在 top 运行时可以使用一些按键命令进行操作如按下 "k" 可以终止一个进程,按下 "h" 可以显示帮助信息等。

  • 排序:可以按照 CPU 使用率、内存使用率、进程 ID 等对进程进行排序。
    • P:以CPU的使用资源排序显示
    • M:以内存的使用资源排序显示
    • N:以pid排序显示
    • ‘x’ 打开/关闭排序列的加亮效果,可以按”shift+>”或者”shift+<”左右改变排序序列
  • 刷新频率:可以设置 top 的刷新频率,以便动态查看系统信息。
  • 按键盘数字“1”可以监控每个逻辑CPU的状况
  • 按键盘字母“b" 打开关闭加亮效果,也可以按 ‘y’ 来打开或者关闭运行态进程的加亮效果

实例

显示进程信息

find /home -size +1M
1

显示完整命令

find /home -size +1M
2

以批处理模式显示程序信息

find /home -size +1M
3

以累积模式显示程序信息

find /home -size +1M
4

设置信息更新次数

find /home -size +1M
5

设置信息更新时间

find /home -size +1M
6

显示指定的进程信息

find /home -size +1M
7

显示更新十次后退出

find /home -size +1M
8

使用者将不能利用交谈式指令来对行程下命令

find /home -size +1M
9

netstat命令 - 显示网络状态

netstat命令来自英文词组network statistics的缩写,其功能是显示各种网络相关信息,例如网络连接状态、路由表信息、接口状态、NAT、多播成员等。

netstat命令不仅应用于Linux系统,而且Windows XP、Windows 7、Windows 10及Windows 11均已默认支持,并且可用参数也相同。

语法格式

find /var/log -mtime +7
0

常用参数:

  • -a或--all :显示所有连线中的Socket。
  • -A<网络类型>或--<网络类型> :列出该网络类型连线中的相关地址。
  • -c或--continuous :持续列出网络状态。
  • -C或--cache :显示路由器配置的快取信息。
  • -e或--extend :显示网络其他相关信息。
  • -F或--fib :显示路由缓存。
  • -g或--groups :显示多重广播功能群组组员名单。
  • -i或--interfaces :显示网络界面信息表单。
  • -l或--listening :显示监控中的服务器的Socket。
  • -M或--masquerade :显示伪装的网络连线。
  • -n或--numeric :直接使用IP地址,而不通过域名服务器。
  • -N或--netlink或--symbolic :显示网络硬件外围设备的符号连接名称。
  • -o或--timers :显示计时器。
  • -p或--programs :显示正在使用Socket的程序识别码和程序名称。
  • -r或--route :显示Routing Table。
  • -s或--statistics :显示网络工作信息统计表。
  • -t或--tcp :显示TCP传输协议的连线状况。
  • -u或--udp :显示UDP传输协议的连线状况。
  • -v或--verbose :显示指令执行过程。
  • -V或--version :显示版本信息。
  • -w或--raw :显示RAW传输协议的连线状况。
  • -x或--unix :此参数的效果和指定"-A unix"参数相同。
  • --ip或--inet :此参数的效果和指定"-A inet"参数相同。

实例

系统网络状态中的所有连接信息:

find /var/log -mtime +7
1

显示当前用户UDP连接状况

find /var/log -mtime +7
2

显示UDP端口号的使用情况

find /var/log -mtime +7
3

显示网卡列表

find /var/log -mtime +7
4

显示网络路由表状态信息:

find /var/log -mtime +7
5

显示组播组的关系

find /var/log -mtime +7
6

只列出监听中的连接:任何网络服务的后台进程都会打开一个端口,用于监听接入的请求。这些正在监听的套接字也和连接的套接字一样,也能被 netstat 列出来。使用 -l 选项列出正在监听的套接字。

find /var/log -mtime +7
7

获取进程名、进程号以及用户 ID:

使用 -p 选项查看进程信息。但使用 -p 选项时,netstat 必须运行在 root 权限之下,不然它就不能得到运行在 root 权限下的进程名,而很多服务包括 http 和 ftp 都运行在 root 权限之下。

find /var/log -mtime +7
8

如果想找出特定端口(例如端口 21)的进程名称,则添加:| grep -w ':21'

ss命令 - 网络状态工具

ss命令用来显示处于活动状态的套接字信息。ss命令可以用来获取socket统计信息,它可以显示和 netstat 类似的内容。但ss的优势在于它能够显示更多更详细的有关TCP和连接状态的信息,而且比netstat更快速更高效

当服务器的socket连接数量变得非常大时,无论是使用netstat命令还是直接 cat /proc/net/tcp,执行速度都会很慢。

ss快的秘诀在于,它利用到了TCP协议栈中tcp_diag。tcp_diag是一个用于分析统计的模块,可以获得Linux 内核中第一手的信息,这就确保了ss的快捷高效。当然,如果你的系统中没有tcp_diag,ss也可以正常运行,只是效率会变得稍慢。

语法格式

find /var/log -mtime +7
9

常用参数:

  • -h:显示帮助信息;
  • -V:显示指令版本信息;
  • -n:不解析服务名称,以数字方式显示;
  • -a:显示所有的套接字;
  • -l:显示处于监听状态的套接字;
  • -o:显示计时器信息;
  • -m:显示套接字的内存使用情况;
  • -p:显示使用套接字的进程信息;
  • -i:显示内部的TCP信息;
  • -4:只显示ipv4的套接字;
  • -6:只显示ipv6的套接字;
  • -t:只显示tcp套接字;
  • -u:只显示udp套接字;
  • -d:只显示DCCP套接字;
  • -w:仅显示RAW套接字;
  • -x:仅显示UNIX域套接字。

实例

只显示监听的套接字

find /path/to/search -atime -7
0

不解析主机名

find /path/to/search -atime -7
1

打印进程名和进程号

find /path/to/search -atime -7
2

仅显示IPv4 或 IPv6 连接

find /path/to/search -atime -7
3

列出处在 time-wait 状态的 IPv4 套接字

find /path/to/search -atime -7
4

注意: 状态可以是以下任意一种

find /path/to/search -atime -7
5

显示所有源端口或目的端口为 ssh 的套接字

find /path/to/search -atime -7
6

显示目的端口是443或80的套接字

find /path/to/search -atime -7
7

对地址和端口过滤

find /path/to/search -atime -7
8

仅过滤端口

find /path/to/search -atime -7
9

显示对方端口号小于100的套接字

find . -ctime  20
0

显示端口号大于1024的套接字

find . -ctime  20
1

显示对方端口是 80的套接字

find . -ctime  20
2

显示TCP连接

find . -ctime  20
3

显示 Sockets 摘要

find . -ctime  20
4

列出当前的established, closed, orphaned and waiting TCP sockets

列出所有打开的网络连接端口

find . -ctime  20
5

查看进程使用的socket

find . -ctime  20
6

找出打开套接字/端口应用程序

find . -ctime  20
7

显示所有UDP Sockets 或 ss -aA udp

find . -ctime  20
8