进程管理

细节

进程一般分为批处理进程、交互进程和守护进程三类。

守护进程总是活跃,在系统启动时通过脚本自动启动,或由 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 [任务编号]

将背景任务调到前台执行