进程管理
细节
进程一般分为批处理进程、交互进程和守护进程三类。
守护进程总是活跃,在系统启动时通过脚本自动启动,或由 root 启动,通常在后台运行。
一个进程可以拥有子进程。当父进程终止时,它的子进程也随之终止;而子进程终止时,父进程通常可以继续运行。
init 进程为根进程,所有进程都是它的子进程
ps
显示进程信息,选项可省略 “-
”
aux | 以 BSD风格 显示进程 常用 |
-efH | 以 SystemV风格 显示进程 |
-e | -A | 显示所有进程 |
a | 显示终端上所有用户的进程 |
x | 显示无终端进程 |
u | 显示详细信息 |
f | 树状显示 |
w | 完整显示信息 |
l | 显示长列表 |
输出字段
USER | 进程所有者 | |
PID | 进程编号 | |
PPID | 父进程编号 | |
%CPU | CPU 占用率 | |
%MEM | 内存占用率 | |
NI | 进程优先级。数值越大,占用 CPU 时间越少 | |
VSZ | 进程虚拟大小 | |
RSS | 页面文件占用 | |
TTY | 终端编号 | |
STAT | 进程状态 | |
D | 不可中断 | |
R | 正在运行,或在队列中的进程 | |
S | 处于休眠状态 | |
T | 停止或被追踪 | |
Z | 僵尸进程 | |
X | 死掉的进程 | |
< | 高优先级 | |
N | 低优先级 | |
L | 有些页被锁进内存 | |
s | 包含子进程 | |
+ | 位于后台的进程组 | |
l | 多线程,克隆线程 |
pstree [ 进程编号 | 用户 ]
树状显示进程信息。可选择显示某用户的进程或从某进程编号开始的进程
-a | 显示完整命令及选项 |
-c | 完全显示重复进程 |
-p | 显示进程编号,隐含-c |
-n | 按进程编号排列进程 |
-u | 显示进程所有者 |
-h | |
-H 进程编号 | 高亮显示进程编号指定的进程及其祖先 |
pgrep 进程名
显示进程编号
-l | 显示进程名和进程编号 |
-o | 进程起始编号 |
-n | 进程终止编号 |
kill [信号代码] 进程编号
根据进程编号向进程发送信号,常用来结束进程,默认信号为 -9
-l [信号代码] | 显示、翻译信号代码 |
-9 | -KILL | 发送 kill 信号,退出 |
-6 | -ABRT | 发送 abort 信号,退出 |
-15 | -TERM | 发送 Termination 信号 |
-1 | -HUP | 挂起 |
-2 | -INT | 从键盘中断,相当于 Ctrl+c |
-3 | -QUIT | 从键盘退出,相当于 Ctrl+d |
-4 | -ILL | 非法指令 |
-11 | -SEGV | 内存错误 |
-13 | -PIPE | 破坏管道 |
-14 | -ALRM | |
-STOP | 停止进程,但不结束 |
-CONT | 继续运行已停止的进程 |
-9 | -1 | 结束当前用户的所有进程 |
pkill [信号代码] 进程名称
结束进程族。如果结束单个进程,请用 kill
xkill
在图形界面中点杀进程。执行此命令后,鼠标指针变为骷髅图案(一定看过《加勒比海盗》吧)。在窗口中点击左键杀死进程,右键取消
top
动态、交互式进程管理器
启动选项 | -b | |
-c | 显示进程启动状态,包括选项、参数、操作对象等;而不只是进程名 | |
-d 秒 | 刷新频率。 -d 5,表示5秒刷新一次 | |
-n 次 | 刷新次数,然后退出。 -n 5,表示刷新5次后退出 | |
-i | 禁止显示空闲进程或僵尸进程 | |
-p 进程编号 | 仅监视指定进程的编号 | |
-s | 安全模式运行,禁用一些交互指令 | |
-S | 累积模式,输出每个进程的总的 CPU 时间,包括已死的子进程 | |
交互命令 | space | 立即刷新 |
k | 交互式杀死进程,提示输入进程编号 (默认发送信号15) | |
r | 设定 renice,提示输入进程编号和 renice值 | |
s | 改变两次刷新时间间隔,以秒为单位 | |
n | 设定显示进程数, 0 为不作限制 | |
i | 隐藏空闲进程和僵尸进程 | |
S | 切换到累积时间模式 | |
l | 开关,在顶部显示 uptime 信息 | |
t | 开关,在顶部显示 进程和 CPU 状态 | |
m | 开关,在顶部显示 free 信息 | |
c | 显示方式切换: 进程名/进程启动状态 | |
A | 按进程启动顺序进行排序。由新到旧 | |
M | 按内存占用排序。由大到小 | |
N | 以进程编号排序。由大到小 | |
P | 按 CPU 占用排序。由大到小 | |
T | 按时间/累积时间排序 | |
f|F | 设定显示字段。设定完成后空格退出 | |
o|O | 设定显示字段的排序。大写向前移动,小写向后移动,空格退出 | |
h|? | 显示有关安全模式和累积模式的帮助信息 | |
W | 把当前的配置写到 ~/.toprc 中 |
renice 优先级 进程
重新设定进程优先级(通常无此必要)
优先级表达式 | +|-|= nice值 | |
nice 取值范围 | -20~19 | |
进程表达式 | -p 进程编号 | 通过进程编号进行设定 |
-g 进程群组编号 | 通过进程群组编号 | |
-u 用户编号 |
nohup 命令 [选项]
将任务提交到后台,输出附加到 ~/nohup.out
文件。即便用户退出登录,提交的命令仍继续执行。
命令 &
背景执行此命令,如果用户退出登录,则命令停止执行
命令1 ; 命令2 ; ……
命令队列,从左向右,依次执行以 ;
分隔的命令
命令1 && 命令2 && ……
命令队列,从左向右,依次执行以 &&
分隔的命令。前一个命令执行成功,后一个命令才能执行
Ctrl+z
挂起当前任务
jobs
显示背景任务
-l | 显示完整信息 |
bg [任务编号]
将挂起的任务背景执行
fg [任务编号]
将背景任务调到前台执行