linux进程管理工具

linux进程管理工具

  • 管理工具
    • pstree
    • ps
    • pgrep,pkill
    • pidof
    • top
    • htop
    • Vmstat
    • pmap
    • Glances
    • Dstat
    • kill

在/proc/PID/cmdline 可以看到是用什么命令来启动

管理工具

Pstree、ps、pidof、pgrep、top、htop、glance、pmap、vmstatdstat、kill、pkill、job、bg、fg、nohup

pstree

显示进程树

ps

进程状态查看工具

常用组合
1.aux
u:以用户为中心组织进程状态信息显示
a:与终端相关的进程
X:与终端无关的进程,[]的是内核的线程

]# ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND

USER:进程的宿主
PID:进程的id号
%CPU:进程占据的cpu时间的百分比
%MEM:进程占据的总体内存空间的百分比
VSZ:虚拟内存大小
RSS:resident size,常驻内存集
TTY:通过哪个终端启动的,?表示与终端无关
STAT:进程状态
R:running
S:interruptable sleeping,可中断睡眠
D:uniterruptable sleeping不可中断睡眠
T:stopped,停止态
Z:zombie,僵死态
+:前台进程
l:多线程进程
n:低优先级进程
<:高优先级进程
s:session leader,回话的领导者
START:启动时间
TIME:运行占据cpu的累积时长
COMMAND:由哪个命令运行起来的相关进程

2.-e
-e:显示所有进程
-f:显示完整格式程序信息

3.-eFH
以进程层级格式显示进程相关信息
H:以层级结构显示,包含父子进程
F:显示完整格式的进程信息

4.-eo,axo
指明要显示的字段
Ni:nice值
pri:优先值
psr:使用哪个cpu
rtptrio:实时优先级

pgrep,pkill

pgrep
-U uid,有效用户
-u uid,实际用户
-t :与指定终端相关的进程
-l:显示进程名
-a:显示完整格式的进程名
-P:pid,显示其父进程为此处指定的进程进程列表

pidof

根据进程名获取其pid

top

有许多内置命令:
排序:
P:以占据的cpu百分比
M:占据内存百分比
T:累积占据cpu时长

首部信息显示:
打l显示uptime信息
打1可以显示具体的每颗cpu的情况
还可以打t显示cpu那栏信息不同格式
打m显示内存那栏信息的不同格式
打s刷新时间间隔
打p可以直接杀死进程

Load average:平均负载,cpu队列中等待运行的任务的个数,有三个数是过去1分钟,5分钟和15分钟
Task:进程数
Cpu
Us:用户空间程序占据的百分比
Sy:内核空间程序占据的百分比
Ni:nice值
Id:空闲比例
Wa:等待io完成的时间(重要)
Hi:硬中断所需要的时间的百分比
Si:软中断,用来进行模式切换占据时间的百分比
St:偷走的时间的比例,通常有虚拟化技术的时候会占据

选项:
-d #:指定刷新时间间隔,默认3秒
-b:以批次方式
-n #:显示多少批次

htop

s:跟踪选定进程的系统调用
l:显示选定进程打开的文件列表
[:将选定的进程绑定至某指定cpu核心

Vmstat

虚拟内存状态
Procs
r:等待运行的进程的队列的个数
b:处于不可中断睡眠态的进程个数(被阻塞队列的长度)
memory
swad:交换内存的使用总量
free:空闲物理内存总量
buff:用于buffer的内存总量
cache:用于cache的内存总量
swap
si:数据从物理内存进入到交换内存的速率,单位是kb/s
so:数据离开swap的速率
io
bi:从块设备读入数据到系统的速率,单位是kb/s
bo:保存数据至块设备的速率
system
in:interrupts,中断速率
cs:context switch,进程切换速率
cpu

选择:
-s:显示内存的统计数据

pmap

报告进程的内存映射的关系
Pmap PID

-x:显示详细格式的信息

另外一种实现:cat /proc/PID/maps

Glances

常用选项:
-b:以Byte为单位显示网卡数据速率
-d:关闭磁盘I/O模块
-f /patch/to/somefile:设定输入文件位置及其格式
-o{HTML|CSV}:输出格式
-m:禁用mount模块
-n:禁用网络模块
-t #:延迟时间间隔
-1:每个cpu的相关数据单独显示

Dstat

-c:显示cpu相关信息
-C # ,#,total
-d:显示disk相关信息
-D total,sda,sdb,…
-g:显示page相关统计数据
-n:显示网络相关统计数据
-m:显示memory相关统计数据
-p:显示process相关统计数据
-r:显示io请求相关的统计数据
-s:显示swapped相关的统计数据
–top-cpu:显示最占用cpu的进程
–top-io:显示最占用io的进程
–top-mem:显示最占用内存的进程
–top-lantency:显示延迟最大的进程

kill

向进程发送控制信号,以实现进程管理

显示当前系统可用信号:
#kill -l
#man 7 signal

常用信号:
1.sighup:无须关闭进程而让其重读配置文件
2.Sigint:中止正在运行的进程;相当于ctrl+c
9.sigkill:杀死正在运行的进程
15.sigterm:终止正在运行的进程
18.sigcont:
19.sigstop:

指定信号的方法:
(1)信号的数字标识:1,2,9,……
(2)信号完整名称
(3)信号的简写名称

向进程发信号:
Kill [-SIGNAL] PID

终止“名称”之下的所有进程:
Killall [-SIGNAL] program

Linux作业控制
前台作业:通过终端启动,且启动后一直占据终端
把后台作业搬回前台,使用fg就可以
后台作业:可以通过终端启动,但启动后即转入后台运行(释放终端)

如何让作业运行于后台?
(1)运行中的作业
Ctrl+z
(2)尚未启动的作业
shell>command &
此类作业虽然被送往后台运行,但其依然与终端相关;如果希望送往后台后,玻璃终端的关系
shell>nohub COMMAND &
查看所有作业:
Jobs
作业控制:
shell>fg [[%]JOB_NUM]:把指定的后台作业调回前台
shell>bg [[%]JOB_NUM]:让送往后台的作业在后台继续运行
shell>kill[%JOB_NUM]:终止指定的作业

你可能感兴趣的:(Linux)