12.2 进程管理命令
进程管理命令
Linux系统上有众多进程查看及管理工具,不完全列示如下:
- 进程查看命令: pstree, ps, pidof, pgrep
- 进程管理命令: kill, pkill, killall
- 进程优先级调整: nice, renice
这些命令在我们以后的运维过程中都能用到,希望大家能熟练掌握。
1. 进程查看
1.1 pstree
pstree options
- 作用: 以树状图的方式展现进程之间的派生关系
- 选项:
-p
: 显示程序 pid;-u
: 显示用户名称;-n
: 用 pid 排序,预设是以程序名称来排序;-a
: 显示每个程序的完整指令,包含路径,参数或是常驻服务的标示;-c
: 不使用精简标示法;-G
: 使用VT100终端机的列绘图字符;-h
: 列出树状图时,特别标明现在执行的程序;-H<pid>
: 此参数的效果和指定"-h"参数类似,但特别标明指定的程序;-l
: 采用长列格式显示树状图;-U
: 使用UTF-8列绘图字符;-V
: 显示版本信息
1.2 ps
ps 命令简介
在前面的 4.1 Linux目录机构 我们提到过,Linux 有两个伪文件系统 /proc
,/sys
/proc/
:- 是基于内存的虚拟文件系统,保存了内核及进程的相关信息;
/proc
内的内核参数分为两类:- 状态变量: 其用于输出内核中统计信息或状态信息,仅用于查看
- 可设置其值从而调整内核运行特性的参数,位于
/proc/sys/
,例如net.ipv4.ip_forward
, 虚拟为net/ipv4/ip_forward
, 存储于/proc/sys/
, 因此其完整路径为/proc/sys/net/ipv4/ip_forward;
/sys/
:- 用于挂载sysfs虚拟文件系统
- 提供了一种比proc更为理想的访问内核数据的途径
- 其主要作用在于为管理Linux设备提供一种统一模型的的接口;
Linux 进程的各种状态信息保存在 /proc
中以进程 PID 号命名的文件中。ps 命令即是通过读取 /proc/PID
目录内的文件,显示进程的相关信息。ps 命令选项有三种风格:
- UNIX 风格的参数,必需使用
-
- BSD 风格的参数, 不能使用
-
- GNU 风格的长选项, 使用
--
开头
ps 使用
ps [options]
:
- 作用: report a snapshot of the current processes.
- BSD 选项:
a
: 所有与终端相关的进程;x
: 所有与终端无关的进程;u
: 以用户为中心组织进程状态信息显示;U<uname>
: 显示特定用户进程-o/o field1, field2,...
:- 可以加
-
也可以不加 - 用于自定义要显示的字段列表,字段列表以逗号分隔;
- 常用的field:
pid, ni, pri, psr, pcpu, stat, comm, tty, ppid, rtprio
- 可以加
- UNIX 选项:
-e
: 显示所有进程-f
: 显示完整格式的进程信息-F
: 显示完整格式的进程信息,与-f
显示的字段略不同-H
: 以层级结构显示进程的相关信息;-U<uid>
: 显示特定用户进程-u<uid>
: 显示特定用户进程
- 常用组合之一:
ps aux
ps -ef
ps -eFH
ps -eo
,ps axo
ps aux
|
|
%CPU
: CPU 占用百分比%MEM
: 内存占用百分比VSZ
: 虚拟内存集;RSS
: Resident Size,常驻内存集;TTY
: 进程所属终端STAT
: 进程状态R:
running,运行中S:
interruptable sleeping,可中断睡眠D:
uninterruptable sleeping,不可中断睡眠T:
Stopped,停止状态Z:
zombie,僵尸进程+:
前台进程l:
多线程进程N:
低优先级进程<:
高优先级进程s:
session leader,管理着多个其他进程的进程
START
: 开始运行时间TIME
: 进程累积实际使用CPU时间片之和
ps -ef
|
|
PPID
: 父进程的 pidC
: cpu utilization, CPU 占用率STIME
: 开始运行时间TIME
: 进程累积实际使用CPU时间片之和
ps -eFH
|
|
C
: cpu utilization, CPU 占用率SZ
: VSZ 虚拟内存集;RSS
: Resident Size,常驻内存集;PSR
: 进程运行于哪颗CPU之上STIME
: 开始运行时间TIME
: 进程累积实际使用CPU时间片之和
ps -eo|axo
|
|
ps -eo user, uid, nice, priority, psr, pcpu, stat, rtprio, cmd, tty, ppid
ni/nice
: nice值priority
: priority, 优先级psr
: PSR 进程运行于哪颗CPU之上pcpu
: %CPU cpu 占用百分比stat
: STAT 进程状态rtprio
: real time priority,实时优先级
1.3 pgrep
pgrep [options] pattern
- 作用: 通过进程名或其他属性查找进程
- 参数: pattern 匹配进程名的模式
- 选项
-l
: 显示进程名;-a
: 显示完整格式的进程名;-u uid
: effective user,有效用户-U uid
: real user,实际用户-t TERMINAL
: 与指定的终端相关的进程;-P pid
: 显示此进程的子进程;-o
:仅显示找到的最小(起始)进程号;-n
:仅显示找到的最大(结束)进程号;
|
|
1.4 pidof命令:
pidof [options] program [program..]
- 作用: 根据进程名,取其进程 pid
- 参数: program 进程名称
- 选项:
-s
:仅返回一个进程号;
|
|
2. 进程管理
kill 类命令可以向进程发送信号,以实现对进程管理。Linux 中每个信号的标识方法有三种:
- 信号的数字标识;
- 信号的完整名称;
- 信号的简写名称;
|
|
2.1 kill
查看信号类型
kill -l [signal]
- 作用: 查看信号类型
- 参数:
signal
待查看的信号类型,可选,默认显示所有信号 - 常用信号:
|
|
发送信号管理进程
kill [-s signal|-SIGNAL] pid...
- 作用: 用于向进程发送信号,以实现对进程的管理
- 选项:
-s signal|-SIGNAL
: 指明要发送的信号-p
:指定kill 命令只打印相关进程的进程号,而不发送任何信号;-u
:指定用户
- 常用信号:
1) SIGHUP
: 无须关闭进程而让其重读配置文件;2)SIGINT
: 终止正在运行的进程,相当于Ctrl+c9)SIGKILL
: 杀死运行中的进程;15)SIGTERM
: 终止运行中的进程;18)SIGCONT
: 启动暂停的进程19)SIGSTOP
: 暂停进程
|
|
2.2 killall
killall [-SIGNAL] program
- 作用: 使用进程的名称来杀死进程,使用此指令可以杀死一组同名进程
- 参数: program 进程名称
- 选项:
-e
:对长名称进行精确匹配;-l
:忽略大小写的不同;-p
:杀死进程所属的进程组;-i
:交互式杀死进程,杀死进程前需要进行确认;-l
:打印所有已知信号列表;-q
:如果没有进程被杀死。则不输出任何信息;-r
:使用正规表达式匹配要杀死的进程名称;-s signal|-SIGNAL
:指定发送的信号-u
:杀死指定用户的进程。
2.3 pkill
pkill [options] pattern
- 作用: 通过进程名或其他属性向进程发送信号,用法与 pgrep 类似
- 选项:
-u uid
: effective user,向指定的有效用户发送信号-U uid
: real user,向指定的实际用户发送信号-t TERMINAL
: 向指定的终端相关的进程发送信号;-P pid
: 向此进程的子进程发送信号-g
:指定进程组;-o
:仅向找到的最小(起始)进程号发送信号;-n
:仅向找到的最大(结束)进程号发送信号;
3. 进程优先级调整
Linux 中进程优先级别为0-139:
- 1-99:实时优先级;
- 100-139:静态优先级,Nice值用于调整静态优先级。
需要注意的是,优先级越靠近 99,优先级越高。可以通过调整 Nice 值调整程序优先级。普通用户只能调高优先级(即降低程序优先级),不能调高优先级。root 可以调高或调低。进程启动时,nice值默认为0,优先级是120,可通过nice值调整的优先级范围是 100-139,nice值分别对应于-20, 19
诸多命令都可以查看进程的优先级与 nice 值,比如 ps axo pid, ni, priority, comm
nice
nice [OPTION] [COMMAND [ARGU]...]
- 作用: 以指定的nice值启动并运行命令
- 参数:
COMMAND
: 要执行的命令,如果没给 COMMAND, 显示当前进程的优先级ARGU
: 传递给 COMMAND 的参数
- 选项:
-n NICE
: 指定优先级,默认为 5
- 注意:仅管理员可调低nice值;
renice
renice [-n] NICE PID...
- 作用: 更改已经运行用户的优先级
- 参数:
NICE
: 新 nice 值PID
: 进程PID
4. 未涉及到的命令:
sar, tsar, iostat, iftop, nethog, …