文章的内容,基本来自每日一个 linux 命令,选取了几个在工作常用的命令,有:top、iostat、netstat 、free 和 ps,本文的主要目的是在学习这几条命令的过程中,简单做一些记录,便于日后工作中更加熟练地使用这些命令。

top

top 命令是 Linux 下面实时展示系统运行情况的一个命令,它也可以显示当前每个任务的系统信息。在对系统的性能进行分析,它是一个最常用的命令。

命令常用参数

  1. 命令格式:
    • top [参数]
  2. 命令功能:
    • 显示当前系统正在执行的进程的相关信息,包括进程ID、内存占用率、CPU占用率等
  3. 命令参数:
    • -b: 批处理
    • -c: 显示完整的治命令
    • -I: 忽略失效过程
    • -s: 保密模式
    • -S: 累积模式
    • -i<时间>: 设置间隔时间
    • -u<用户名>: 指定用户名
    • -p<进程号>: 指定进程
    • -n<次数>: 循环显示的次数

显示说明

在命令行输入 top 命令,终端会展示当前系统的信息,如下所示

1
2
3
4
5
6
7
8
9
10
11
[matt@XXX ~]$ top
top - 21:04:19 up 129 days, 20:31, 1 user, load average: 58.32, 57.85, 57.50
Tasks: 589 total, 1 running, 584 sleeping, 0 stopped, 4 zombie
Cpu(s): 22.3%us, 11.8%sy, 0.0%ni, 63.2%id, 0.2%wa, 0.0%hi, 2.5%si, 0.0%st
Mem: 132103752k total, 122070628k used, 10033124k free, 42940k buffers
Swap: 0k total, 0k used, 0k free, 58734284k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
51179 matt 20 0 70.6g 24g 80m S 704.9 19.2 39244,38 java
1 root 20 0 1155m 1.1g 592 S 0.0 0.9 4020:57 init
2 root 20 0 0 0 0 S 0.0 0.0 0:00.01 kthreadd

上面只是截取了部分的信息,这里介绍以下上面的一些信息的说明。上面的前五行是当前系统情况整体的统计信息区。

  1. 任务的队列信息,同 uptime 命令的执行结果
    • 21:04:19: 当前系统时间;
    • up 129 days, 20:31: 系统已经运行了129天20小时31分钟(这期间系统没有重启);
    • 1 users: 当前有1个用户登录系统;
    • load average: 58.32, 57.85, 57.50: load average 后面的三个数分别是1分钟、5分钟、15分钟的负载情况(这个数除以逻辑 CPU 的数量,结果高于5的时候就表明系统在超负荷运转
  2. Tasks — 任务(进程)的统计信息
    • 系统现在共有589个进程,其中处于运行中的有1个,584个在休眠(sleep),stoped 状态的有0个,zombie 状态(僵尸)的有4个;
  3. cpu 的状态信息
    • 22.3%us: 用户空间占用 CPU 的百分比
    • 11.8% sy: 内核空间占用 CPU 的百分比
    • 0.0% ni: 改变过优先级的进程占用 CPU 的百分比
    • 63.2% id: 空闲 CPU 百分比
    • 0.2% wa: IO 等待占用 CPU 的百分比
    • 0.0% hi: 硬中断(Hardware IRQ)占用 CPU 的百分比
    • 2.5% si: 软中断(Software Interrupts)占用 CPU 的百分比
    • 0.0% st: 虚拟机占用的百分比
  4. 内存的状态信息
    • 132103752k total: 物理内存总量(128GB)
    • 122070628k used: 使用中的内存总量(118GB)
    • 10033124k free: 空闲内存总量(10GB)
    • 42940k buffers: 缓存的内存量 (42M)
  5. swap交换分区信息
    • 0k total: 交换区总量(0K)
    • 0k used: 使用的交换区总量(0K)
    • 0k free: 空闲交换区总量(0K)
    • 58734284k cached: 缓冲的交换区总量(56GB)
  6. 空行,作为系统信息与进程信息的分界线
  7. 各进程(任务)的状态监控
    • PID: 进程id
    • USER: 进程所有者
    • PR: 进程优先级
    • NI: nice 值,负值表示高优先级,正值表示低优先级
    • VIRT: 进程使用的虚拟内存总量,单位 kb。VIRT=SWAP+RES
    • RES: 进程使用的、未被换出的物理内存大小,单位 kb。RES=CODE+DATA
    • SHR: 共享内存大小,单位 kb
    • S: 进程状态。D= 不可中断的睡眠状态 R= 运行 S= 睡眠 T= 跟踪/停止 Z= 僵尸进程
    • %CPU: 上次更新到现在的CPU时间占用百分比
    • %MEM: 进程使用的物理内存百分比
    • TIME+: 进程使用的CPU时间总计,单位1/100秒
    • COMMAND: 进程名称

其中,第四行中使用中的内存总量(used)指的是现在系统内核控制的内存数,空闲内存总量(free)是内核还未纳入其管控范围的数量。纳入内核管理的内存不见得都在使用中,还包括过去使用过的现在可以被重复利用的内存,内核并不把这些可被重新使用的内存交还到 free 中去,因此在 linux 上 free 内存会越来越少,但不用为此担心。

常用命令

在工作中,常用的几个命令在 每天一个linux命令(44):top命令 都已经介绍得比较全面了,这里,再简单重复一下。

多 CPU 监控

在 top 的基本视图中,按键盘数字1,可监控每个逻辑CPU的状况:

TOP 多 CPU 监控

高亮显示当前进程

敲击键盘b(打开/关闭加亮效果),top 的视图变化如下(图来自每天一个linux命令(44):top命令)。

TOP 高亮

进程字段排序

默认进入 top 时,各进程是按照 CPU 的占用量来排序的,敲击键盘x(打开/关闭排序列的加亮效果),top 的视图变化如下所示,会将 CPU 占用量这行高亮(图来自每天一个linux命令(44):top命令)。

TOP 按 CPU 占用量排序

通过 shift + >shift + <可以向右或左改变排序列,下图是按一次shift + >的效果图,视图现在已经按照 %MEM 来排序(图来自每天一个linux命令(44):top命令)。

TOP 按内存排序

显示进程完成命令

敲击键盘c(打开/关闭进程完成命令),top 的视图变化如下(图来自每天一个linux命令(44):top命令)。

TOP 显示完整命令

其他命令

  • top -p 574: 显示指定的进程信息
  • top -d 3: 设置信息更新时间
  • top -n 2: 设置信息更新次数
  • top -S: 以累积模式显示程序信息
  • top -Hp 2050:显示该进程所有线程的详细信息

iostat

iostat 也即 I/O statistics(输入/输出统计),iostat 会对系统的磁盘操作活动进行监视。它的特点是汇报磁盘活动统计情况,同时也会汇报出 CPU 使用情况。但它不能对某个进程进行深入分析,仅对系统的整体情况进行分析。

命令常用参数

1.命令格式:

  • iostat [参数][时间][次数]
    2.命令功能:
  • 通过 iostat 方便查看 CPU、网卡、tty设备、磁盘、CD-ROM 等等设备的活动情况,负载信息。
    3.命令参数:
  • -C: 显示CPU使用情况
  • -d: 显示磁盘使用情况
  • -k: 以 KB 为单位显示
  • -m: 以 M 为单位显示
  • -N: 显示磁盘阵列(LVM) 信息
  • -n: 显示NFS 使用情况
  • -p[磁盘]: 显示磁盘和分区的情况
  • -t: 显示终端和CPU的信息
  • -x: 显示详细信息
  • -V: 显示版本信息

显示说明

使用 iostat 命令时,终端会显示很多很多的信息,这里介绍一下这些信息的含义。

1
2
3
4
5
6
7
8
[matt@XXX ~]$ iostat
Linux 2.6.32-431.20.3.el6.mt20150216.x86_64 (XXX) 2017年07月16日 _x86_64_ (32 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
22.28 0.00 14.26 0.25 0.00 63.22
Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
sda 20.65 205.78 452.71 9429827972 20744862776
  1. CPU 属性值说明:
    • %user:CPU 处在用户模式下的时间百分比
    • %nice:CPU 处在带 NICE 值的用户模式下的时间百分比
    • %system:CPU 处在系统模式下的时间百分比
    • %iowait:CPU 等待输入输出完成时间的百分比
    • %steal:管理程序维护另一个虚拟处理器时,虚拟 CPU 的无意识等待时间百分比
    • %idle:CPU 空闲时间百分比
  2. disk 属性
    • tps:该设备每秒的传输次数(Indicate the number of transfers per second that were issued to the device.)。
    • kB_read/s:每秒从设备(drive expressed)读取的数据量;
    • kB_wrtn/s:每秒向设备(drive expressed)写入的数据量;
    • kB_read:读取的总数据量;
    • kB_wrtn:写入的总数量数据量,这些单位都为Kilobytes。
1
2
3
4
5
6
7
8
[matt@XXX ~]$ iostat -xm 3
Linux 2.6.32-431.20.3.el6.mt20150216.x86_64 (XXX) 2017年07月16日 _x86_64_ (32 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
22.28 0.00 14.26 0.25 0.00 63.21
Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await svctm %util
sda 0.50 42.34 6.47 14.18 0.10 0.22 31.90 0.02 1.20 0.44 0.90

这里 disk 属性与上面的不太相同

  • rrqm/s: 每秒进行 merge 的读操作数目。即 rmerge/s
  • wrqm/s: 每秒进行 merge 的写操作数目。即 wmerge/s
  • r/s: 每秒完成的读 I/O 设备次数。即 rio/s
  • w/s: 每秒完成的写 I/O 设备次数。即 wio/s
  • rsec/s: 每秒读扇区数。即 rsect/s
  • wsec/s: 每秒写扇区数。即 wsect/s
  • rkB/s: 每秒读K字节数。是 rsect/s 的一半,因为每扇区大小为512字节。
  • wkB/s: 每秒写K字节数。是 wsect/s 的一半。
  • avgrq-sz: 平均每次设备 I/O 操作的数据大小 (扇区)。
  • avgqu-sz: 平均 I/O 队列长度。
  • await: 平均每次设备 I/O 操作的等待时间 (毫秒)。
  • svctm: 平均每次设备 I/O 操作的服务时间 (毫秒)。
  • %util: 一秒中有百分之多少的时间用于 I/O 操作,即被 IO 消耗的 CPU 百分比。

其中,下面是在实践中积累的一些经验

  1. 如果 %iowait 的值过高,表示硬盘存在 I/O 瓶颈;
  2. %idle 值高,表示 CPU 较空闲,如果 %idle 值高但系统响应慢时,有可能是 CPU 等待分配内存,此时应加大内存容量。%idle 值如果持续低于 10,那么系统的 CPU 处理能力相对较低,表明系统中最需要解决的资源是 CPU;
  3. 如果 %util 接近 100%,说明产生的I/O请求太多,I/O 系统已经满负荷,该磁盘可能存在瓶颈,其值大于 70% 时,磁盘的压力就很大了;
  4. 如果 svctm 比较接近 await,说明 I/O 几乎没有等待时间;如果 await 远大于 svctm,说明 I/O 队列太长,IO 响应太慢,则需要进行必要优化;
  5. 如果 avgqu-sz 比较大,也表示有当量 IO 在等待,它是 IO 调优时需要注意的地方,它是直接每次操作的数据的大小,如果次数多,但数据拿的小的话,其实 IO 也会很小;
  6. await 的大小一般取决于服务时间(svctm) 以及 I/O 队列的长度和 I/O 请求的发出模式。如果 svctm 比较接近 await,说明 I/O 几乎没有等待时间;如果 await 远大于 svctm,说明 I/O 队列太长,应用得到的响应时间变慢,如果响应时间超过了用户可以容许的范围,这时可以考虑更换更快的磁盘,调整内核 elevator 算法,优化应用,或者升级 CPU。

常用示例

  • iostat 2 3: 每隔 2 秒刷新显示,且显示 3 次;
  • iostat -d sda: 显示指定磁盘信息;
  • iostat -t: 显示 tty 和 CPU 信息;
  • iostat -m: 以M为单位显示所有信息;
  • iostat -d -k 1 1: 查看TPS和吞吐量信息;
  • iostat -c 1 3: 查看cpu状态;

ps

ps —— 是 process status 的简称,它列出的是当前时刻那些进程的快照,如果想要动态的显示进程信息内容,可以使用 top 命令。

使用 ps 可以做以下事情:

  • 确定有哪些进程正在运行、查看运行的状态;
  • 进程是否结束;
  • 进程有没有僵死;
  • 哪些进程占用了过多的资源等等。

Linux 进程的五种状态

在 Linux 上进程有5种状态,每种状态对应着不同的标识,如下表所示:

Linux 上状态 ps 的状态码
运行(正在运行或在运行队列中等待) R(running or on run queue)
中断(休眠中、受阻、在等待某个条件的形成和接收到信号) S(sleeping)
不可中断(收到信号不唤醒和不可运行, 进程必须等待直到有中断发生) D(uninterruptible sleep)
僵死(进程已终止,但进程描述符存在,直到父进程调用wait4()后才会释放) Z(a defunct zombie process)
停止(进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停止运行运行) T(traced or stopped)

命令常用参数

  1. 命令格式
    • ps [参数]
  2. 命令参数
    • a:显示所有进程
    • -a:显示同一终端下的所有程序
    • -A:显示所有进程
    • c:显示进程的真实名称
    • -N:反向选择
    • e:显示环境变量
    • f:显示程序间的关系
    • -H:显示树状结构
    • r:显示当前终端的进程
    • T:显示当前终端的所有程序
    • u:指定用户的所有进程
    • -au:显示较详细的资讯
    • -aux:显示所有包含其他使用者的行程
    • -C<命令>:列出指定命令的状况
    • --lines<行数>:每页显示的行数
    • --width<字符数>:每页显示的字符数
    • --help:显示帮助信息
    • --version:显示版本显示

显示说明

将当前这次登入的 PID 与相关信息列示出来

1
2
3
4
[matt@XXX ~]$ ps -l
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
0 S 10 120177 120176 0 80 0 - 27078 wait pts/0 00:00:00 bash
0 R 10 137912 120177 0 80 0 - 27031 - pts/0 00:00:00 ps

上面各个参数的含义:

  • F: 代表这个程序的旗标 (flag), 4 代表使用者为 super user
  • S: 代表这个程序的状态 (STAT),关于各 STAT 的意义将在内文介绍
  • UID: 程序被该 UID 所拥有
  • PID: 就是这个程序的 ID
  • PPID: 则是其上级父程序的ID
  • C: CPU 使用的资源百分比
  • PRI: 这个是 Priority (优先执行序) 的缩写
  • NI: 这个是 Nice 值
  • ADDR: 这个是 kernel function,指出该程序在内存的那个部分。如果是个 running的程序,一般就是 “-“
  • SZ: 使用掉的内存大小
  • WCHAN: 目前这个程序是否正在运作当中,若为 - 表示正在运作
  • TTY: 登入者的终端机位置
  • TIME: 使用掉的 CPU 时间。
  • CMD: 所下达的指令为何

ps aux

1
2
3
4
5
[matt@XXX ~]$ ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.5 0.8 1184632 1166268 ? Ss 2016 4029:48 /sbin/init
root 2 0.0 0.0 0 0 ? S 2016 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? S 2016 36:36 [migration/0]

上面各个参数的含义:

  • USER:该 process 属于那个使用者账号的
  • PID:该 process 的号码
  • %CPU:该 process 使用掉的 CPU 资源百分比
  • %MEM:该 process 所占用的物理内存百分比
  • VSZ:该 process 使用掉的虚拟内存量 (Kbytes)
  • RSS:该 process 占用的固定的内存量 (Kbytes)
  • TTY:该 process 是在那个终端机上面运作,若与终端机无关,则显示 ?,若为 pts/0 等等的,则表示为由网络连接进主机的程序。
  • STAT:该程序目前的状态
  • START:该 process 被触发启动的时间
  • TIME:该 process 实际使用 CPU 运作的时间
  • COMMAND:该程序的实际指令

使用示例

ps 的常用命令主要有以下几种用法:

  • ps -A: 显示所有进程信息
  • ps -u root: 显示指定用户信息
  • ps -ef: 显示所有进程信息,连同命令行
  • grep 一起,来查看指定的进程。

netstat

Netstat 是一款命令行工具,可用于列出系统上所有的网络套接字连接情况,包括 tcp, udp 以及 unix 套接字。

命令常用参数

  • 命令格式:
    netstat [-acCeFghilMnNoprstuvVwx][-A<网络类型>][–ip]
  • 命令参数:
    1. -a 或 –all 显示所有连线中的Socket。
    2. -A <网络类型>或–<网络类型> 列出该网络类型连线中的相关地址。
    3. -c 或 –continuous 持续列出网络状态。
    4. -C 或 –cache 显示路由器配置的快取信息。
    5. -e 或 –extend 显示网络其他相关信息。
    6. -F 或 –fib 显示FIB。
    7. -g 或 –groups 显示多重广播功能群组组员名单。
    8. -h 或 –help 在线帮助。
    9. -i 或 –interfaces 显示网络界面信息表单。
    10. -l 或 –listening 显示监控中的服务器的Socket。
    11. -M 或 –masquerade 显示伪装的网络连线。
    12. -n 或 –numeric 直接使用IP地址,而不通过域名服务器。
    13. -N 或 –netlink 或 –symbolic 显示网络硬件外围设备的符号连接名称。
    14. -o 或 –timers 显示计时器。
    15. -p 或 –programs 显示正在使用Socket的程序识别码和程序名称。
    16. -r 或 –route 显示Routing Table。
    17. -s 或 –statistice 显示网络工作信息统计表。
    18. -t 或 –tcp 显示TCP传输协议的连线状况。
    19. -u 或 –udp 显示UDP传输协议的连线状况。
    20. -v 或 –verbose 显示指令执行过程。
    21. -V 或 –version 显示版本信息。
    22. -w 或 –raw 显示RAW传输协议的连线状况。
    23. -x 或 –unix 此参数的效果和指定”-A unix”参数相同。
    24. –ip 或 –inet 此参数的效果和指定”-A inet”参数相同。

显示说明

这里看下在命令行下输入 netstat 显示内容的含义:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[matt@XXXX ~]$ netstat
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:55030 0.0.0.0:XmlIpcRegSvc ESTABLISHED
tcp 0 0 localhost:18103 localhost:tr-rsrb-p2 TIME_WAIT
tcp 0 0 localhost:18137 localhost:tr-rsrb-p2 TIME_WAIT
tcp 0 0 0.0.0.0:5266 0.0.0.0:16011 ESTABLISHED
Active UNIX domain sockets (w/o servers)
Proto RefCnt Flags Type State I-Node Path
unix 11 [ ] DGRAM 72685074 /dev/log
unix 2 [ ] DGRAM 8702 /var/run/portreserve/socket
unix 2 [ ] DGRAM 7565 @/org/kernel/udev/udevd
unix 2 [ ] DGRAM 339609275
unix 2 [ ] DGRAM 339608880
unix 3 [ ] STREAM CONNECTED 339608854 /var/run/nss-cache.sock

netstat 的输出结果可分为两部分:

  1. 是 Active Internet connections,称为有源 TCP 连接,其中 Recv-QSend-Q 指的是接收队列和发送队列,这些数字一般都应该是0,如果不是则表示软件包正在队列中堆积,这种情况只能在非常少的情况见到;
  2. 另一个是 Active UNIX domain sockets,称为有源 Unix 域套接口(和网络套接字一样,但是只能用于本机通信,性能可以提高一倍。

其中:

  • Proto 显示连接使用的协议;
  • RefCnt 表示连接到本套接口上的进程号;
  • Types 显示套接口的类型;
  • State 显示套接口当前的状态;
  • Path 表示连接到套接口的其它进程使用的路径名。

套接口类型:

  • -t :TCP
  • -u :UDP
  • -raw :RAW类型
  • –unix :UNIX域类型
  • –ax25 :AX25类型
  • –ipx :ipx类型
  • –netrom :netrom类型

状态说明:

  • LISTEN:侦听来自远方的TCP端口的连接请求
  • SYN-SENT:再发送连接请求后等待匹配的连接请求(如果有大量这样的状态包,检查是否中招了)
  • SYN-RECEIVED:再收到和发送一个连接请求后等待对方对连接请求的确认(如有大量此状态,估计被flood攻击了)
  • ESTABLISHED:代表一个打开的连接
  • FIN-WAIT-1:等待远程TCP连接中断请求,或先前的连接中断请求的确认
  • FIN-WAIT-2:从远程TCP等待连接中断请求
  • CLOSE-WAIT:等待从本地用户发来的连接中断请求
  • CLOSING:等待远程TCP对连接中断的确认
  • LAST-ACK:等待原来的发向远程TCP的连接中断请求的确认(不是什么好东西,此项出现,检查是否被攻击)
  • TIME-WAIT:等待足够的时间以确保远程TCP接收到连接中断请求的确认
  • CLOSED:没有任何连接状态

常用命令

列出所有的符合某些条件的连接

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 累出所有连接
netstat -a
# 只列出 tcp
netstat -at
# 只列出 udp
netstat -au
# 只列出 tcp,加-n 禁止域名解析,之查看 ip 地址
netstat -ant
# 只列出监听中的连接,-l:只列出监听的套接字
netstat -tnl
# netstat 的 -c 选项持续输出信息
netstat -ct
# 显示 pid
netstat -pt

统计数据

1
netstat -s

显示路由信息

1
netstat -rn

显示UDP端口号的使用情况

1
netstat -apu

统计机器中网络连接各个状态个数

1
netstat -a | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'

找出运行在指定端口的进程

1
netstat -anpt | grep ':16064'

kill

kill 主要使用结束 linux 后台进程的命令,kill命令是通过向进程发送指定的信号来结束相应进程的。

命令常用参数

  • 命令格式
    • kill[参数][进程号]
  • 命令功能
    • 发送指定的信号到相应进程。不指定信号时将发送 SIGTERM(15)终止指定进程。如果任无法终止该程序,可使用发送的信号为 SIGKILL(9) ,将强制结束进程,使用 ps 命令或者 jbs 命令可以查看进程号。
  • 命令参数:
    1. -l 信号,若果不加信号的编号参数,则使用 -l 参数会列出全部的信号名称;
    2. -a 当处理当前进程时,不限制命令名和进程号的对应关系
    3. -p 指定 kill 命令只打印相关进程的进程号,而不发送任何信号
    4. -s 指定发送信号
    5. -u 指定用户

注意:

  1. kill 命令可以带信号号码选项,也可以不带。如果没有信号,kill 命令就会发出终止信号(15),这个信号可以被进程捕获,使得进程在退出之前可以清理并释放资源。也可以用 kill 向进程发送特定的信号。
  2. kill 可以带有进程 PID 号作为参数。当用 kill 向这些进程发送信号时,必须是这些进程的主人。
  3. 可以向多个进程发信号或终止它们。
  4. 应注意,信号使进程强行终止,这常会带来一些副作用,如数据丢失或者终端无法恢复到正常状态。发送信号时必须小心,只有在万不得已时,才用 kill 信号(9),因为进程不能首先捕获它。要撤销所有的后台作业,可以输入kill 0。

常用方法

所有的信号名称

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[XXX@XXX ~]$ kill -l
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP
6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1
11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM
16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ
26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR
31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3
38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8
43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7
58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2
63) SIGRTMAX-1 64) SIGRTMAX
# 列出指定的信号的值
[XXX@XXX ~]$ kill -l TERM
15

其中,只有第 9 种信号( SIGKILL )才可以无条件终止进程,其他信号进程都有权利忽略。 下面是常用的信号:

  • HUP 1 终端断线
  • INT 2 中断(同 Ctrl + C)
  • QUIT 3 退出(同 Ctrl + \)
  • TERM 15 终止
  • KILL 9 强制终止
  • CONT 18 继续(与STOP相反, fg/bg命令)
  • STOP 19 暂停(同 Ctrl + Z)

彻底杀死进程

1
kill –9 3268

参考: