Linux07 进程管理
Linux 进程管理
一、静态进程查看 ps
ps命令格式:
ps -aux 以详细的方式显示所有进程
ps -lA 查看所有系统的数据
ps axjf 显示进程树状态
ps -ef | grep processname 或 pgrep processname 查找进程
-A:与-e意思一样,表示列出所有进程
-a :不与terminal有关的进程
-u:有效用户相关的进程
x:通常与a这个参数一起用,可以列出完整信息
输出格式:
l:较仔细列出该pid信息
j:工作格式
-f:做一个更为完整的输出
输出:
F:代表这个程序旗标 (process flags),说明这个程序的总结权限,常见号码有:
若为 4 表示此程序的权限为 root ;
若为 1 则表示此子程序仅进行复制(fork)而没有实际执行(exec)。
USER:进程是由那个用户运行
PID: 进程号
%CPU: 占用CPU百分比
%MEM: 占用内存百分比
VSZ Virutal Memory Size: 虚拟内存大小, 一般是线程指令大小+总共可用的共享内存+总共占用内存大小(包括swap)
RSS Resident Set Size: 是以内存占用大小, 实际用指令大小+实际共享内存大小+时间占用内存大小(不包括swap)
TTY:程序需在哪个终端运行, tty1-6, pts/0,1,2...
STAT:进程状态
S: 中断睡眠, 等待其他进程或事件来唤醒.
s: 这个进程是父进程
D: 不可中断睡眠, 一般是等待IO完成
R: 运行状态
T:停止状态
Z: 僵死状态, 父进程丢失了的子进程
+: 进程在前台
-: 进程在后台
N: 低优先级进程
<: 高优先级进程
START: 进程开始时间
UID/PID/PPID:表示用户的UID/进程的PID号码/此进程的父进程PID号码
C:表示CPU的使用率,单位是百分比
PRI/NI:表示此进程被CPU执行的优先级,数字越小,优先级越高
ADDR:支持该进程在内存的那个部分,若该进程正在运行这表示为“-”
SZ:表示该进程占用了多少内存
WCHAN:表示该进程是否运行,若在运行这表示为“-”
TTY:表示登陆终端,若是远程登陆表示为pts/h
TIME: 进程运行时间
CMD: 进程的运行程序, 在中括号中的为内核进程
僵尸进程
通常,造成僵尸进程的原因是该进程应该已经执行完毕,或是因故应该要终止了,但是该进程的父进程却无法完整将该进程结束掉,而造成那个进程一直在内存当中。如果你发现某个进程的CMD后面接上<defunct>时,就代表该进程是僵尸进程。
二、动态进程查看命令 top, htop
第一行:表示现在时间,系统开机到现在的时间,多少登陆用户。负载均衡,在1、5、15分钟系统平均运行几个进程的意思,越小代表系统越闲置,若高于1得注意你的系统压力是否太过繁复了
第二行:表示系统共运行了多少进程,他们分别的运行状态,注意后面的zombie一般为0如果为其他数,就要注意了,看看到是那个进程是僵尸进程
第三行:表示当下CPU整体负载,需要特别注意的是%wa,这个选项代表的是I/Owait,通常你的系统会变慢都是I/O产生的问题比较大,如果你是多核设备可以按“1”切换查看不同的CPU负载情况
下面是我们在 top 命令看到的 CPU 占用率信息及各项值含义:
Cpu(s): 29.9%us, 17.4%sy, 0.0%ni, 52.4%id, 0.0%wa, 0.0%hi, 0.3%si, 0.0%st
us: User time 用户时间(User time):表示 CPU 执行用户进程的时间,包括 nices 时间。通常期望用户空间 CPU 越高越好。
sy: System time 系统时间(System time):表示 CPU 在内核运行时间,包括 IRQ 和 softirq 时间。系统 CPU 占用率高,表明系统某部分存在瓶颈。通常值越低越好。
ni: Nice time Nice 时间(Nice time):系统调整进程优先级所花费的时间。
id: Idle time 空闲时间(Idle time):系统处于空闲期,等待进程运行。
wa: Waiting time 等待时间(Waiting time):CPI 在等待 I/O 操作完成所花费的时间。系统部应该花费大量时间来等待 I/O 操作,否则就说明 I/O 存在瓶颈。
hi: Hard Irq time 硬中断处理时间(Hard Irq time):系统处理硬中断所花费的时间。
si: SoftIrq time 软中断处理时间(SoftIrq time):系统处理软中断中断所花费的时间。
st: Steal time 丢失时间(Steal time):被强制等待(involuntary wait)虚拟 CPU 的时间,此时 hypervisor 在为另一个虚拟处理器服务。
第四行与第五行:表示物理内存与虚拟内存使用的情况,swap的使用要越低越好,如果swap使用率较高表示物理内存不足
第六行及以下:
PID:是进程ID
USER:该进程所属用户
PR:priority的缩写,进程的优先级,值越小优先级越高
NI:nice的缩写,与priority有关,值越小优先级越高
%CPU:CPU的使用率
%MEM:内存使用率
TIME+:CPU使用时间的累加
值得注意的是:在top中输入h或者?,可以显示帮助
在 top 运行过程当中可以使用的按键命令:
? :显示在 top 当中可以输入的按键命令;
P :以 CPU 的使用资源排序显示;
M :以 Memory 的使用资源排序显示;
N :以 PID 来排序喔!
T :由该 Process 使用的 CPU 时间累积 (TIME+) 排序。
k :给予某个 PID 一个讯号 (signal)
r :给予某个 PID 重新制订一个 nice 值。
q :离开 top 软件的按键。
htop常用命令
M:以memory排序
P:以cpu占用比排序
T:以cpu占用时长排序
u:过滤仅显示选定用户的进程:
s:跟踪选定的进程所发起的系统调用;
l:显示指定进程打开的文件
t:显示进程树格式
a:将选定的进程绑定在指定的CPU上
三、查看进程树命令pstree
-A:各进程间连接用ASCII字符连接
-U:该进程之间连接用utf8字符连接
-p:同时显示PID
-u:同时列出每个进程的所属账号名称
四、kill, pkill, killall
kill -signal PID 删除进程
常见的 signal
| 代号 | 名称 | 内容 |
| 1 | SIGHUP | 启动被终止的进程,可让该 PID 重新读取自己的配置档,类似重新启动 |
| 2 | SIGINT | 相当於用键盘输入 [ctrl]-c 来中断一个进程的进行 |
| 9 | SIGKILL | 代表强制中断一个进程的进行,如果该进程进行到一半, 那么尚未完成的部分可能会有『半产品』产生,类似 vim会有 .filename.swp 保留下来。 |
| 15 | SIGTERM | 以正常的结束进程来终止该进程。由於是正常的终止, 所以后续的动作会将他完成。不过,如果该进程已经发生问题,就是无法使用正常的方法终止时, 输入这个 signal 也是没有用的。 |
| 19 | SIGSTOP | 相当於用键盘输入 [ctrl]-z 来暂停一个进程的进行 |
pkill | killall -signal 命令名称
-i :interactive 的意思,互动式的,若需要删除时,会出现提示字节给使用者;
-I :命令名称(可能含参数)忽略大小写。
-u 用户名:删掉某个用户的所有进程。
浙公网安备 33010602011771号