find命令 - 根据路径和条件搜索指定文件
find命令的功能是根据给定的路径和条件查找相关文件或目录,其参数灵活方便,且支持正则表达式,结合管道符后能够实现更加复杂的功能,是Linux系统运维人员必须掌握的命令之一。
find命令通常进行的是从根目录(/)开始的全盘搜索,有别于whereis、which、locate等有条件或部分文件的搜索。对于服务器负载较高的情况,建议不要在高峰时期使用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 的文件:
将当前目录及其子目录下所有文件后缀为 .c 的文件列出来:
将当前目录及其子目录中的所有文件列出:
查找 /home 目录下大于 1MB 的文件:
查找 /var/log 目录下在 7 天前修改过的文件:
查找过去 7 天内被访问的文件:
在当前目录下查找最近 20 天内状态发生改变的文件和目录:
将当前目录及其子目录下所有 20 天前及更早更新过的文件列出:
查找 /var/log 目录中更改时间在 7 日以前的普通文件,并在删除之前询问它们:
查找当前目录中文件属主具有读、写权限,并且文件所属组的用户和其他用户具有读权限的文件:
查找系统中所有文件长度为 0 的普通文件,并列出它们的完整路径:
找并执行操作(例如删除):
这个例子中,-exec 选项允许你执行一个命令,{} 将会被匹配到的文件名替代,; 表示命令结束。
rpm命令 - RPM软件包管理器
rpm命令来自英文词组redhat package manager的缩写,中文译为“红帽软件包管理器”,其功能是在Linux系统下对软件包进行安装、卸载、查询、验证、升级等工作,常见的主流系统(如RHEL、CentOS、Fedora等)都采用这种软件包管理器,推荐用固定搭配“rpm-ivh 软件包名”安装软件,而卸载软件则用固定搭配“rpm -evh 软件包名”,简单好记又好用。
语法格式
常用参数
-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 :详细显示指令执行过程,便于排错。
实例
安装软件
显示软件安装信息
ps命令 - 显示进程状态
ps命令来自英文单词process的缩写,中文译为“进程”,其功能是显示当前系统的进程状态。使用ps命令可以查看到进程的所有信息,例如进程的号码、发起者、系统资源(处理器与内存)使用占比、运行状态等。ps命令可帮助我们及时发现哪些进程出现“僵死”或“不可中断”等异常情况。 ps命令经常会与kill命令搭配使用,以中断和删除不必要的服务进程,避免服务器的资源浪费。
语法格式:
ps 的参数非常多, 在此仅列出几个常用的参数并大略介绍含义
-A:列出所有的进程
-w :显示加宽可以显示较多的资讯
-au :显示较详细的资讯
-aux :显示所有包含其他使用者的进程,用标准格式输出。
-ef:与aux一样,但是是用bsd的格式输出
au(x) :输出格式 :
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:所执行的指令
实例
查找指定进程格式:
例如显示 php 的进程:
显示进程信息:
显示指定用户信息
显示所有进程信息,连同命令行
uname命令 - 显示系统内核信息
uname命令来自英文词组UNIX name的缩写,其功能是查看系统主机名、内核及硬件架构等信息。如果不加任何参数,默认仅显示系统内核名称(相当于-s参数)的作用。
语法格式
常用参数:
-a 或–all 显示全部的信息,包括内核名称、主机名、操作系统版本、处理器类型和硬件架构等。。
-m 或–machine 显示处理器类型。
-n 或–nodename 显示主机名。
-r 或–release 显示内核版本号。
-s 或–sysname 显示操作系统名称。
-v 显示操作系统的版本。
–help 显示帮助。
–version 显示版本信息。
-p 显示处理器类型(与 -m 选项相同)。
实例
显示系统信息:
显示计算机类型:
显示计算机名:
显示操作系统发行编号:
显示操作系统名称:
显示系统版本与时间:
kill命令 - 杀死进程
kill命令的功能是杀死(结束)进程。Linux系统中如需结束某个进程,既可以使用如service或systemctl这样的管理命令来结束服务,也可以使用kill命令直接结束进程信息。 如使用kill命令后进程并没有结束,则可以使用信号9进行强制杀死动作。
语法格式
常用参数:
-l:列出所有可用的信号。-<signal>:发送特定的信号给目标进程,如-9表示发送 KILL 信号,即强制终止进程。
实例
**终止进程:**默认情况下,kill命令发送SIGTERM(信号15),这可以请求进程终止。如果进程没有捕获这个信号,它将被终止。
其中 PID 是进程的 ID。
**发送指定信号:**通过 -s 选项可以发送指定的信号。
例如,发送 SIGKILL(信号9)将立即结束进程,不能被忽略或捕获。
**杀死进程组:**使用 -9 选项可以杀死整个进程组。
使用 kill -l 命令列出所有可用信号。
最常用的信号是:
SIGKILL(信号9):立即结束进程,不能被捕获或忽略。SIGTERM(信号15):正常结束进程,可以被捕获或忽略。SIGSTOP(信号19):暂停进程,不能被捕获、忽略或结束。SIGCONT(信号18):继续执行被暂停的进程。SIGINT(信号2):通常是Ctrl+C产生的信号,可以被进程捕获或忽略。
如:
终止 PID 为 1234 的进程:
强制终止 PID 为 1234 的进程:
向 PID 为 1234 的进程发送 SIGSTOP:
显示信号
杀死指定用户所有进程:
注意事项:
在使用
kill命令时,需要具有相应的权限,否则可能无法终止进程。某些进程可能需要发送多次信号才能终止,比如一些守护进程。
强制杀死进程可能会导致数据丢失或其他副作用,因此应谨慎使用。
top命令 - 实时监控
Linux top 是一个在 Linux 和其他类 Unix 系统上常用的实时系统监控工具。它提供了一个动态的、交互式的实时视图,显示系统的整体性能信息以及正在运行的进程的相关信息。。
语法格式
参数说明:
-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’ 来打开或者关闭运行态进程的加亮效果
实例
显示进程信息
显示完整命令
以批处理模式显示程序信息
以累积模式显示程序信息
设置信息更新次数
设置信息更新时间
显示指定的进程信息
显示更新十次后退出
使用者将不能利用交谈式指令来对行程下命令
lscpu
查看详细的CPU架构信息
netstat命令 - 显示网络状态
netstat命令来自英文词组network statistics的缩写,其功能是显示各种网络相关信息,例如网络连接状态、路由表信息、接口状态、NAT、多播成员等。
netstat命令不仅应用于Linux系统,而且Windows XP、Windows 7、Windows 10及Windows 11均已默认支持,并且可用参数也相同。
语法格式
常用参数:
-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"参数相同。
实例
系统网络状态中的所有连接信息:
显示当前用户UDP连接状况
显示UDP端口号的使用情况
显示网卡列表
显示网络路由表状态信息:
显示组播组的关系
只列出监听中的连接:任何网络服务的后台进程都会打开一个端口,用于监听接入的请求。这些正在监听的套接字也和连接的套接字一样,也能被 netstat 列出来。使用 -l 选项列出正在监听的套接字。
获取进程名、进程号以及用户 ID:
使用 -p 选项查看进程信息。但使用 -p 选项时,netstat 必须运行在 root 权限之下,不然它就不能得到运行在 root 权限下的进程名,而很多服务包括 http 和 ftp 都运行在 root 权限之下。
如果想找出特定端口(例如端口 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也可以正常运行,只是效率会变得稍慢。
语法格式
常用参数:
-h:显示帮助信息;
-V:显示指令版本信息;
-n:不解析服务名称,以数字方式显示;
-a:显示所有的套接字;
-l:显示处于监听状态的套接字;
-o:显示计时器信息;
-m:显示套接字的内存使用情况;
-p:显示使用套接字的进程信息;
-i:显示内部的TCP信息;
-4:只显示ipv4的套接字;
-6:只显示ipv6的套接字;
-t:只显示tcp套接字;
-u:只显示udp套接字;
-d:只显示DCCP套接字;
-w:仅显示RAW套接字;
-x:仅显示UNIX域套接字。
实例
只显示监听的套接字
不解析主机名
打印进程名和进程号
仅显示IPv4 或 IPv6 连接
列出处在 time-wait 状态的 IPv4 套接字
注意: 状态可以是以下任意一种
显示所有源端口或目的端口为 ssh 的套接字
显示目的端口是443或80的套接字
对地址和端口过滤
仅过滤端口
显示对方端口号小于100的套接字
显示端口号大于1024的套接字
显示对方端口是 80的套接字
显示TCP连接
显示 Sockets 摘要
列出当前的established, closed, orphaned and waiting TCP sockets
列出所有打开的网络连接端口
查看进程使用的socket
找出打开套接字/端口应用程序
显示所有UDP Sockets 或 ss -aA udp
shell命令快捷键
删除:删除(具体可以说是剪切)的字符串可以 ctrl + y 进行粘贴
ctrl + u : 从光标处向前删除指令串
ctrl + k : 从光标处向后删除指令串
移动
ctrl + a : 光标移动到整个指令串的最前面
ctrl + e : 光标移动到整个指令串的最后面