Linux进程管理工具

进程管理

ps支持三种选项:1.UNIX短选项 如‐A ‐e。2.BSD选项 如a。3.GNU长选项 如‐‐help。
注意:在使用过程中带-和不带-的区别
不加任何选项默认是显示当前终端中的进程,看不到其它终端运行的进程
BSD风格选项
a 选项包括所有终端中的进程
ps a显示所有终端登陆执行的进程,显示内容过少
x 选项包括不链接终端的进程
在显示的第二列TTY中问号代表与终端无关的,是系统级的服务
u 选项显示进程所有者的信息
VSZ承诺给的内存空间
RSS实际的内存空间
START进程启动的时间
f 选项显示进程树,相当于‐‐forest
显示进程树,形同pstree
k|‐‐sort 属性对属性排序,属性前加-表示倒序
对ps显示的选项进行排序,例如user、pid、%cpu、%mem、vsz、rss、tty、stat、start、time、command,例如ps aux k tty表示对tty进行排序
o 按照定制的信息显示,例如pid、cmd、%cpu、%mem
只显示想看到的选项,例如pid、cmd、tty、%cpu、%mem等,默认是以PID的序号从小到大排序,注意与ax合用时把o放到最后
L 显示支持的属性列表
显示ps支持查看的属性,例如pid、cmd、tty、%cpu、%mem
一般程序的有效用户和实际用户是同一个人,但是带有特殊权限位的程序可以造成这种区别,例如passwd上面有suid,执行命令时的实际用户是命令的执行者,但程序的拥有者是root
ruser实际用户(实际所有者) euser有效用户(所有者)
UNIX风格选项
-U userlist 指定真正的用户ID或名称
例如ps -U wang wang用户打开的进程列表
-u userlist 指定有效的用户ID或名称
例如ps -u wang wang用户打开的有效进程列表
-p pid 只显示pid号码的进程
例如ps -p pID号码 显示指定的PID号码的进程
-ppid pid 显示PID号码的子进程
例如ps -ppid 3235 显示PID号码为3235的子进程
-f 显示完整格式程序信息,通常与-e合用ps -ef
-e 显示所有进程,相当于-A
-o 指定要显示的进程
-t 显示某个终端上的进程,通常与-f连用
例如ps -ft pts/1 查看终端1上的进程列表
-C 指定命令的进程信息
ps -C bash 查看bash产生的进程列表信息,脚本中写还是要加上#!/bin/bash要不然不能通过ps -C 1.sh查找,能看到的是bash
通过脚本名称找进程,脚本中要有#!/bin/bash,只能以./的模式运行,不能用bash运行
可以显示多个脚本的信息ps -C 1.sh -C 2.sh
ps ‐p 1244 ‐o comm= 通过PID查找产生进程的命令
ps ‐C f1.sh ‐o pid= 通过命令查找进程的PID
ps -C sshd,bash 查看sshd和bash产生的进程
ps ‐eo comm,etime,user | grep nginx 查看进程的执行时间
查找占用最多内存和CPU的进程:
ps ‐eo pid,ppid,cmd,%mem,%cpu ‐‐sort=‐%mem | head
ps ‐eo pid,ppid,cmd,%mem,%cpu ‐‐sort=‐%cpu | head
pgrep 灵活搜索,支持正则表达式,可以用来过滤搜索
-u uid: effective user,生效者
-U uid: real user,真正发起运行命令者
-t terminal: 与指定终端相关的进程
pgrep -t pts/1 查看终端1上的进程列表,默认只显示pid号码,加上-l显示程序名,例如pgrep -lt pts/1
-l: 显示进程名
-a: 显示完整格式的进程名
centos6不支持此选项,pgrep -a “sshd” 查找与sshd相关的进程
-P pid: 显示指定进程的子进程 例如pgrep -P 1 查看1的子进程
pidof按照程序名查找进程号 pidof vim 查找vim的进程号
uptime查看系统负载情况
格式为:系统时间 启动了多久 登陆的用户 负载(系统平均负载:1分钟 5分钟 10分钟)
top命令动态观察负载情况,默认以cpu的百分比来排序,cpu同一时间只能做一件事
%Cpu(s): 0.0 us(分配给用户), 0.0 sy(分配给系统), 0.0 ni(调整优先级),100.0 id(空闲的), 0.0 wa(等待), 0.0 hi(硬中断), 0.0 si(软中断), 0.0 st(被盗取的时间)
排序(从大到小)
P:以占据的CPU百分比排序,%CPU
M:占据内存百分比排序,%MEM
T:累积占据CPU时长排序,TIME+
首部信息显示
uptime信息:l命令,隐藏uptime信息显示
tasks及cpu信息:t命令,模式切换或者是隐藏task及cpu信息显示
cpu分别显示:1 (数字),显示所有的cpu数据
memory信息:m命令,模式切换或者隐藏内存信息
退出命令:q,退出当前的观察
修改刷新时间间隔:s,默认是3秒
终止指定进程:k,杀死相关进程,输入k后默认是杀死占用cpu最多的进程,输入pid后提示传送什么信号结束进程,默认15正常退出
保存文件:W,可以把当前的状态瞬间保存一下,默认以隐藏文件保存在当前用户的家目录中,名字为.toprc
选项
-d #: 指定刷新时间间隔,默认为3秒
例如 top -d 6显示的内容6秒刷新一次
-b: 全部显示所有进程
默认只能显示前面的若干进程(不可以上下拉),top -b可以显示所有(可以上下拉)
-n #: 刷新多少次后退出
默认不停的刷新,-n指定次数后退出,top -n 3 -b -d 2显示所有进程,2秒刷新一次,刷新3次后退出
htop 默认没有安装,使用yum install -y htop进行安装
选项:
-d #: 指定延迟时间;
设置刷新的延迟时间。例如,htop -d 100 命令会使输出在1秒后才会刷新(参数 -d 的单位是10微秒)
-u UserName: 仅显示指定用户的进程
例如 htop -u root
-s COLUME: 以指定字段进行排序
子命令:
s: 跟踪选定进程的系统调用
l: 显示选定进程打开的文件列表
a:将选定的进程绑定至某指定CPU核心 临时绑定,退出htop就取消绑定
t: 显示进程树
free查看内存的使用情况
-b 以字节为单位
-m 以MB为单位
-g 以GB为单位
-h 易读格式
-o 不显示-/+buffers/cache行 contos6上可用,centos7上取消这一行
-t 显示RAM + swap的总和
-s n 刷新间隔为n秒
-c n 刷新n次后即退出
第一部分Mem行解释:
total:内存总数;
used:已经使用的内存数;
free:空闲的内存数;
shared:当前已经废弃不用;
buffers Buffer:缓存内存数;
cached Page:缓存内存数。
关系:total = used + free
第二部分(-/+ buffers/cache)解释:
(-buffers/cache) used内存数:第一部分Mem行中的 used – buffers – cached
(+buffers/cache) free内存数: 第一部分Mem行中的 free + buffers + cached
可见-buffers/cache反映的是被程序实实在在吃掉的内存,而+buffers/cache反映的是可以挪用的内存总数。
第三部分是指交换分区。
buffers和cached并不占用内存,可以释放。
在内存中/proc/sys/vm/drop_caches的值为零,echo 1 > /proc/sys/vm/drop_caches清空缓存
vmstat命令,查看虚拟内存信息
vmstat 2 5两秒执行一次,执行5次退出
procs:
r:可运行(正运行或等待运行)进程的个数,和核心数有关
b:处于不可中断睡眠态的进程个数(被阻塞的队列的长度)
 memory:
swpd: 交换内存的使用总量
free:空闲物理内存总量
buffer:用于buffer的内存总量
cache:用于cache的内存总量
 swap:
si:从磁盘交换进内存的数据速率(kb/s)
so:从内存交换至磁盘的数据速率(kb/s)
IO:以内存为参考,出内存是写磁盘,进内存是读磁盘
bi: Blocks received from a block device (blocks/s).每秒从块设备接收到的块数,单位:块/秒 也就是读块设备。
bo: Blocks sent to a block device (blocks/s).每秒发送到块设备的块数,单位:块/秒 也就是写块设备。
system:
in: interrupts 中断速率,包括时钟
cs: context switch 进程切换速率
 cpu:
us:Time spent running non-kernel code
sy: Time spent running kernel code
id: Time spent idle. Linux 2.5.41前,包括IO-wait time.
wa: Time spent waiting for IO. 2.5.41前,包括in idle.
st: Time stolen from a virtual machine. 2.6.11前, unknown.
 选项:
-s: 显示内存的统计数据
iostat:统计CPU和设备IO信息
示例:iostat 1 10 1秒钟显示一次显示10次退出
pmap命令:进程对应的内存映射,了解进程是否在健康状态,如果某个进程的内存一直增加而不减少,今后导致内存耗尽系统崩溃,称之为内存泄漏
pmap [options] pid […]
-x: 显示详细格式的信息
示例:pmap -x 1 查看pid为1进程的详细信息 脏数据是正在修改处在中间状态的数据
 另外一种实现:
cat /proc/PID/maps cat/proc/1/maps
glances命令:查看远程主机的状态,安装软件yum install -y glances,跨网络通讯,一个做服务器一个做客户端配合成对出现,最好服务器和客户端的版本一致
 glances [-bdehmnrsvyz1] [-B bind] [-c server] [-C conffile] [-p port] [-P password] [–password] [-t refresh] [-f file] [-o output]
使用方法:在服务器上运行,然后在客户机上连接查看
服务器端运行:glances -s B 192.168.30.7打开glances
客户端运行:glances -c 192.168.30.7连接到服务器上查看服务器主机的状态
 内建命令:
a Sort processes automatically l Show/hide logs
c Sort processes by CPU% b Bytes or bits for network I/O
m Sort processes by MEM% w Delete warning logs
p Sort processes by name x Delete warning and critical logs
i Sort processes by I/O rate 1 Global CPU or per-CPU stats
d Show/hide disk I/O stats h Show/hide this help screen
f Show/hide file system stats t View network I/O as combination
n Show/hide network stats u View cumulative network I/O
s Show/hide sensors stats q Quit (Esc and Ctrl-C also work)
y Show/hide hddtemp stats
常用选项:
‐b: 以Byte为单位显示网卡数据速率
‐d: 关闭磁盘I/O模块
‐f /path/to/somefile: 设定输入文件位置
‐o {HTML|CSV}:输出格式
‐m: 禁用mount模块
dstat命令:系统资源统计,代替vmstat,iostat,默认没有安装,yum install -y dstat
dstat [-afv] [options..] [delay [count]]
-c: 显示cpu相关信息
-C #,#,…,total
-d: 显示disk相关信息
-D total,sda,sdb,…
-g:显示page相关统计数据
-m: 显示memory相关统计数据
-n: 显示network相关统计数据
-p: 显示process相关统计数据
-r: 显示io请求相关的统计数据
-s: 显示swapped相关的统计数据
‐n: 禁用网络模块
‐t #: 延迟时间间隔
‐1:每个CPU的相关数据单独显示
–tcp
 –udp
 –unix
 –raw
 –socket
 –ipc
 –top-cpu:显示最占用CPU的进程
 –top-io: 显示最占用io的进程
 –top-mem: 显示最占用内存的进程
 –top-latency: 显示延迟最大的进程
iotop命令是一个用来监视磁盘I/O使用状况的top类工具iotop具有与top相似的UI,其中包括PID、用户、I/O、进程等相关信息,可查看每个进程是如何使用IO
iotop输出
第一行:Read和Write速率总计
第二行:实际的Read和Write速率
第三行:参数如下:
线程ID(按p切换为进程ID)
优先级
用户
磁盘读速率
磁盘写速率
swap交换百分比
IO等待所占的百分比
线程/进程命令
kill命令:
向进程发送控制信号,以实现对进程管理,每个信号对应一个数字,信号名称以SIG开头(可省略),不区分大小写
显示当前系统可用信号: kill –l,trap -l
常用信号:man 7 signal
1) SIGHUP: 无须关闭进程而让其重读配置文件
2) SIGINT: 中止正在运行的进程;相当于Ctrl+c
3) SIGQUIT:相当于ctrl+\,相当于quit
9) SIGKILL: 强制杀死正在运行的进程,不一定杀死所有进程,容易造成数据的丢失,不建议用 -9虽然杀不死init进程(进程号为1),但是对系统造成了伤害
15) SIGTERM:终止正在运行的进程,正常退出 无法使用杀死当前bash
18) SIGCONT:继续运行
19) SIGSTOP:后台休眠
指定信号的方法:
(1) 信号的数字标识:1, 2, 9
(2) 信号完整名称:SIGHUP
(3) 信号的简写名称:HUP
更改http的名称及端口号例如 kill -1 httpd 令http重读配置文件,不是所有的进程发数字1就能有效
使用方法:先使用ps aux查出进程编号,再使用kill -1 pid或者kill -HUP pid或者kill -hup pid
按PID:kill [-SIGNAL] pid …
kill –n SIGNAL pid;kill –s SIGNAL pid 一般简写为kill -1 pid
按名称:killall [-SIGNAL] comm…
例如执行了三个同样的命令但是pid不同可以使用killall 命令名称 直接杀死所有的与此命令有关的进程,关闭服务的时候本质上调用的就是killall命令
按模式:pkill [options] pattern,支持正则表达式
-SIGNAL
-u uid: effective user,生效者
-U uid: real user,真正发起运行命令者
-t terminal: 与指定终端相关的进程
例如pkill -t pts/1 杀死在pts/1终端上的进程,可以加上-9 pkill -9 -t pts/1强行终止进程
-l: 显示进程名(pgrep可用)
-a: 显示完整格式的进程名(pgrep可用)
-P pid: 显示指定进程的子进程

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/97631

发表评论

登录后才能评论

联系我们

400-080-6560

在线咨询:点击这里给我发消息

邮件:1823388528@qq.com

工作时间:周一至周五,9:30-18:30,节假日同时也值班