进程管理命令

Linux进程查看及管理的工具:pstree,ps,pidof,pgrep,top,htop,glance,pmap,vmstat,dstat,kill,pkill,job,bg,fg,nohup

linux上进程有5种状态:

1. 运行(正在运行或在运行队列中等待)
2. 中断(休眠中, 受阻, 在等待某个条件的形成或接受到信号)
3. 不可中断(收到信号不唤醒和不可运行, 进程必须等待直到有中断发生)
4. 僵死(进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放)
5. 停止(进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停止运行运行)

ps工具标识进程的状态码:

D 不可中断 uninterruptible sleep (usually IO)
R 运行 runnable (on run queue)
S 中断 sleeping
T 停止 traced or stopped
Z 僵死 a defunct (”zombie”) process 
+:前台进程
l:多线程进程
L:内存 分页并带锁
N:低优先级进程
<:高优先级进程
s:session leader,会话子进程发起者 

pstree

pstree命令以树状图的方式展现进程之间的派生关系(“{}”表示线程)

选项:

-a:显示每个程序的完整指令,包含路径,参数或是常驻服务的标示;
-c:不使用精简标示法; 
-G:使用VT100终端机的列绘图字符; 
-h:列出树状图时,特别标明现在执行的程序; -H<程序识别码>:此参数的效果和指定"-h"参数类似,但特别标明指定的程序; -l:采用长列格式显示树状图; 
-n:用程序编号排序。预设是以程序名称来排序; 
-p:显示程序识别码; 
-u:显示用户名称; 
-U:使用UTF-8列绘图字符; 
-V:显示版本信息。

ps

命令功能:
用来显示当前进程的状态

参数

a  显示所有进程
-a 显示同一终端下的所有程序
-A 显示所有进程
-N 忽略选择。
-d 显示所有进程,但省略所有的会话引线(utility)
-x 显示没有控制终端的进程,同时显示各个命令的具体路径。dx不可合用。(utility)
-p pid 进程使用cpu的时间
c  显示进程的真实名称
-N 反向选择
-e 等于“-A”
f  显示程序间的关系
-H 显示树状结构
r  显示当前终端的进程
T  显示当前终端的所有程序
u  指定用户的所有进程
--help 显示帮助信息
--version 显示版本显示
U username 显示该用户下的所有进程,且显示各个命令的详细路径。如:ps U zhang;(utility)
-f 全部列出,通常和其他选项联用。如:ps -fa or ps -fx and so on.
-l 长格式(有F,wchan,C 等字段)
-j 作业格式
v 以虚拟存储器格式显示
s 以信号格式显示
-m 显示所有的线程
-H 显示进程的层次(和其它的命令合用,如:ps -Ha)(utility)
e 命令之后显示环境(如:ps -d e; ps -a e)(utility)
h 不显示第一行


k| --sort 属性  对属性排序
    k %mem    对mem使用率排序   
-o 用户自定义格式。
     pid 、comm(cmd) 、%cpu 、%mem 、state 、tty 、euser、user(有效用户) 、ruser(真实用户)、euser(==user为生效用户),psr为cpu使用数量
-au 显示较详细的资讯
-aux 显示所有包含其他使用者的行程
-C<命令> 列出指定命令的状况
    ps -C f1.sh  列出f1.sh的信息        
--lines<行数> 每页显示的行数
--width<字符数> 每页显示的字符数

显示优先级
    ni:nice值
    pri:priority  优先级
    psr:processor CPU编号
    rtprio:实时优先级
    示例: 
        ps axo pid,cmd,psr,ni,pri,rtprio  (rtprio超出99的不显示) 
  • nice指定命令优先级:
nice [OPTION] [COMMAND [ARG]...]
nice -n --20 ping 127.0.0.1 修改ping的nice优先级为-20
  • renice修改命令优先级:
    renice [-n] priority pid...

      renice -n -20 ping 127.0.0.1  修改ping的renice优先级为20
      renice -5 ping 127.0.0.1 修改ping的renice优先级为-5
      renice 5 ping 127.0.0.1 修改ping的renice优先级为5
    

查看:

ps axo pid,comm,ni
  • ps命令常用用法(方便查看系统进程)
1)ps a 显示现行终端机下的所有程序,包括其他用户的程序。
2)ps -A 显示所有进程。
3)ps c 列出程序时,显示每个程序真正的指令名称,而不包含路径,参数或常驻服务的标示。
4)ps -e 此参数的效果和指定"A"参数相同。
5)ps e 列出程序时,显示每个程序所使用的环境变量。
6)ps f 用ASCII字符显示树状结构,表达程序间的相互关系。
7)ps -H 显示树状结构,表示程序间的相互关系。
8)ps -N 显示所有的程序,除了执行ps指令终端机下的程序之外。
9)ps s 采用程序信号的格式显示程序状况。
10)ps S 列出程序时,包括已中断的子程序资料。
11)ps -t<终端机编号>  指定终端机编号,并列出属于该终端机的程序的状况。
12)ps u 以用户为主的格式来显示程序状况。
13)ps x 显示所有程序,不以终端机来区分。

常用组合:-ef
    -e:显示所有进程
    -f:显示完整格式程序信息
常用组合:-eFH
    -F:显示更完整格式的进程信息
    -H:以进程层级格式显示进程相关信息
常用组合:自定义(参数‘o’在最后)
    ps -eo pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,comm k %mem
    psaxo stat,euid,ruid,tty,tpgid,sess,pgrp,ppid,pid,pcpu,cmd k %cpu  
    ps -C f1.sh o pid cmd user ruser %cpu psr ni 
        查看f1.sh命令的pid等信息,user为有效用户,ruser为真实用户 psr为cpu的使用
  • ps aux输出如下:
  • Head标头:
USER    用户名
UID     用户ID(User ID)
PID     进程ID(Process ID)
PPID    父进程的进程ID(Parent Process id)
SID     会话ID(Session id)
%CPU    进程的cpu占用率
%MEM    进程的内存占用率
VSZ     系统所允许进程使用的虚存的大小(Virtual Size)
RSS     进程使用的驻留集大小或者是实际内存的大小,Kbytes字节。
TTY     与进程关联的终端(tty)
STAT    进程的状态:进程状态使用字符表示的(STAT的状态码)
R 运行  Runnable (on run queue),正在运行或在运行队列中等待。
S 睡眠  Sleeping休眠中, 受阻, 在等待某个条件的形成或接受到信号。
I 空闲  Idle
Z 僵死  Zombie(a defunct process) 进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放。
D 不可中断  Uninterruptible sleep (ususally IO)    收到信号不唤醒和不可运行, 进程必须等待直到有中断发生。
T 终止 Terminate进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停止运行运行。
P 等待交换页
W 无驻留页  has no resident pages  没有足够的记忆体分页可分配。
X 死掉的进程
< 高优先级进程 高优先序的进程
N 低优先级进程 低优先序的进程
L 内存锁页  Lock有记忆体分页分配并缩在记忆体内
s 进程的领导者(在它之下有子进程);
l 多进程的(使用 CLONE_THREAD, 类似 NPTL pthreads)
+ 位于后台的进程组 
START  进程启动时间和日期
TIME   进程使用的总cpu时间
COMMAND  正在执行的命令行命令
NI     优先级(Nice)
PRI    进程优先级编号(Priority)
WCHAN  进程正在睡眠的内核函数名称;该函数的名称是从/root/system.map文件中获得的。
FLAGS  与进程相关的数字标识

pgrep

pgrep命令以名称为依据从运行进程队列中查找进程,并显示查找到的进程id。每一个进程ID以一个十进制数表示,通过一个分割字符串和下一个ID分开,默认的分割字符串是一个新行。对于每个属性选项,用户可以在命令行上指定一个以逗号分割的可能值的集合。

pgrep(选项)(参数) 
    选项 
        -o:仅显示找到的最小(起始)进程号;
        -n:仅显示找到的最大(结束)进程号; 
        -l:显示进程名称; 
        -g:指定进程组; 
        -t:指定开启进程的终端; 
        -u:指定进程的有效用户ID。 
        -U uid: real user,真正发起运行命令者
        -P pid:显示指定进程的子进程
        -a:显示完整格式的进程名
    参数 
        进程名称:指定要查找的进程名称,同时也支持类似grep指令中的匹配模式。

示例:
    pgrep -au danran
    pgrep -aU danran 
    pgrep -at tty2   显示tty2终端的进程   
    pgrep -lt tty2 显示tty2终端的进程
    pgrep -P 5998 显示编号5998进程的信息  

pidof:显示指定进程的编号,可判断该进程是否存在

uptime

uptime命令主要用于获取主机运行时间和查询linux系统负载等信息。uptime命令可以显示系统已经运行了多长时间,信息显示依次为:现在时间、系统已经运行了多长时间、目前有多少登陆用户、系统在过去的1分钟、5分钟和15分钟内的平均负载。

image
image
14:34:55 //系统当前时间
up 2:45,  //主机已运行时间,时间越大,说明你的机器越稳定。
4 user  //用户连接数,是总连接数而不是用户数
load average   // 系统平均负载,统计最近1,5,15分钟的系统平均负载
    系统平均负载是指在特定时间间隔内运行队列中的平均进程数。
    如果每个CPU内核的当前活动进程数不大于3的话,那么系统的性能是良好的。如果每个CPU内核的任务数大于5,那么这台机器的性能有严重问题。
    如果你的linux主机是1个双核CPU的话,当Load Average 为6的时候说明机器已经被充分使用了。

top

top命令可以实时动态地查看系统的整体运行情况,是一个综合了多方信息监测系统性能和运行信息的实用工具。通过top命令所提供的互动式界面,用热键可以管理。

语法 top(选项) 
    选项 
        -b:显示所有进程; 
        -c:显示完整的子命令; 
        -d #:指定刷新间隔时间,默认为3s; 
        -n #:刷新#次之后退出。
        -I:忽略失效过程; 
        -s:保密模式; 
        -S:累积模式; 
        -i<时间>:设置间隔时间; 
        -u<用户名>:指定用户名; 
        -p<进程号>:指定进程; 
        

top内置交互命令   
    h:显示帮助画面,给出一些简短的命令总结说明; 
    i:忽略闲置和僵死进程,这是一个开关式命令; 
    r:重新安排一个进程的优先级别; 
    S:切换到累计模式;
    f或者F:从当前显示中添加或者删除项目; 
    o或者O:改变显示项目的顺序;
    
    s:修改刷新时间(单位为s),如果有小数,就换算成ms。输入0值则系统将不断刷新,默认值是3s;
    k:终止一个进程;
    q:退出程序;
    w:将当前设置写入~/.toprc文件中。 
    
    首部信息显示
        l:切换显示平均负载和启动时间信息; 
        m:切换显示内存信息; 
        t:切换显示进程和CPU状态信息; 
        c:切换显示命令名称和完整命令行; 
        1:cpu分别显示   
    
    排序
        M:根据驻留内存大小进行排序; 
        P:根据CPU使用百分比大小进行排序; 
        T:根据时间/累计时间进行排序; 

栏位信息简介

us:用户空间
sy:内核空间
ni:调整nice 时间
id:空闲
wa:等待IO 时间
hi:硬中断
si:软中断(模式切换)
st:虚拟机偷走的时间
  • top输出如下:
top 
    14:42:59 当前系统时间
    2:42 系统已经运行了16天 
    4 user 4个用户当前登录
    load average: 0.03 0.03 0.05 系统负载,即任务队列的平均长度
Tasks: 
    155 total 总进程数
    1 running 正在运行的进程数 
    154 sleeping 睡眠的进程数
    0 stopped 停止的进程数
    0 zombie 冻结进程数
%Cpu(s): 
    0.1 us 用户空间占用CPU百分比 
    0.1 sy 内核空间占用CPU百分比
    0.0 ni 用户进程空间内调整优先级的进程占用CPU百分比 
    0.2 id 空闲CPU百分比
    0.0 wa 等待输入输出的CPU时间百分比
    0.0 hi 硬中断 
    0.0 si 软中断 
    0.0 st 虚拟机偷走的时间
    Mem: 
        999936 total 物理内存总量
        376792 free 使用的物理内存总量
        262580 used 空闲内存总量 
        360564 buffers/cache 用作内核缓存的内存量
    Swap: 
        2047996 total 交换区总量 
        2047996 free 空闲交换区总量
        0 used 使用的交换区总量 
        541052 avail Mem

htop 命令:需从Fedora-EPEL 源安装

http://172.16.0.1/fedora-epel/7/x86_64
yum -y install htop

选项:
    -d #:指定延迟时间;
    -u UserName:仅显示指定用户的进程
    -s COLUME:以指定字段进行排序
子命令:
s:跟踪选定进程的系统调用
l:显示选定进程打开的文件列表
a:将选定的进程绑定至某指定CPU核心
t:显示进程树  

vmstat

vmstat 命令:虚拟内存信息

vmstat [options] [delay [count]]
vmstat 2 5

procs:

r:可运行(正运行或等待运行)进程的个数,和核心数有关
b:处于不可中断睡眠态的进程个数( 被阻塞的队列的长度)

vmstat工具的使用是通过两个数字参数来完成的,第一个参数是采样的时间间隔数,单位是秒,第二个参数是采样的次数,如:
vmstat 2 1 2s采集一次服务器状态,采集一次

  • vmstat输出显示如下:
memory: 
    swpd: 交换内存的使用总量
    free:空闲物理内存总量
    buffer:用于buffer 的内存总量
    cache:用于cache 的内存总量

swap:
    si:从磁盘交换进内存的数据速率(kb/s),以内存为参考点
    so:从内存交换至磁盘的数据速率(kb/s),以内存为参考点

io:
    bi:从块设备读入数据到系统的速率(kb/s),以内存为参考点
    bo:保存数据至块设备的速率,以内存为参考点

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:显示内存的统计数据  
vmstat -s 2 1      显示内存的统计信息,只采集一次     

iostat:

  • ostat主要用于监控系统设备的IO负载情况

    用法
    iostat [参数] [时间] [次数
    参数:
    -c 显示CPU使用情况
    -d 显示磁盘使用情况
    -k 以KB为单位显示
    -m 以M为单位显示
    -N 显示磁盘阵列(LVM) 信息
    -x 显示详细信息
    示例:iostat 1 10

tps:每秒的传输次数
kB_read/s:每秒从设备(drive expressed)读取的字节;
kB_wrtn/s:每秒向设备(drive expressed)写入的字节;
kB_read:读取的总数据量;
kB_wrtn:写入的总数量数据量;这些单位都为Kilobytes。

pmap 命令:

  • pmap命令用于报告进程的内存映射关系,是Linux调试及运维一个很好的工具。
语法 pmap(选项)(参数) 
pmap [options] pid [...]
    
选项 
    -x: 显示详细格式的信息; 
    -d:显示设备格式; 
    -q:不显示头尾行; 
    -V:显示指定版本。 
参数 
    进程号:指定需要显示内存映射关系的进程号,可以是多个进程号。


示例:pmap 1  输出的内容为/proc/PID/maps中的内容     
  • 另外一种实现:

    cat /proc/PID/maps

输出的内容为pmap 1

glances

查看远程设备的进程信息
使用该工具时需要关闭防火墙
glances 命令:EPEL源

客户端和服务端都需要安装glances工具
http://172.16.0.1/fedora-epel/7/x86_64 epel源
yum -y install glances

  • C/S 模式下运行glances命令

    服务器模式(被监听者):
    glances -s -B 172.17.0.100(IPADDR)
    IPADDR:指明监听的服务器本机IP地址
    防火墙打开glances工具开启的端口号
    客户端模式:
    glances -c IPADDR
    IPADDR:要监听的服务器端地址

  • glances [-bdehmnrsvyz1] [-B bind] [-c server] [-C conffile] [-p port] [-P
    password] [--password] [-t refresh] [-f file] [-o output]

常用选项:

-b:以Byte为单位显示网卡数据速率
-d:关闭磁盘I/O模块
-f /path/to/somefile:设定输入文件位置
-o {HTML|CSV}:输出格式
-m:禁用mount 模块
-n:禁用网络模块
-t #:延迟时间间隔,默认为2s
-1:每个CPU
-B @IP|host:绑定服务器端 IP 地址或者主机名称
-c @IP|host:连接 glances 服务器端
-C file:设置配置文件默认是 /etc/glances/glances.conf 
-e:显示传感器温度
-p PORT:设置运行端口默认是 61209 
-P password:设置客户端 / 服务器密码
-s:设置 glances 运行模式为服务器
-h: 显示帮助信息
-v: 显示版本信息

内建命令:

a Sort processes automatically 
c Sort processes by CPU% 
m Sort processes by MEM% 
p Sort processes by name 
i Sort processes by I/O rate 
d Show/hide disk I/O stats 
f Show/hide file system stats 
n Show/hide network stats 
s Show/hide sensors stats 
y Show/hide hddtemp stats
l Show/hide logs
b Bytes or bits for network I/O
w Delete warning logs
x Delete warning and critical logs
1 Global CPU or per-CPU stats
h Show/hide this help screen
t View network I/O as combination
u View cumulative network I/O
q Quit (Esc and Ctrl-C also work)

kill命令

  • 向进程发送控制信号,以实现对进程管理,每个信号对应一个数字,信号名称以SIG开头(可省略),不区分大小写
格式 
    kill(选项)(参数)
    
    kill [ -s signal | -p ] [ -a ] pid ... 
    kill -l [ signal ] 

选项
    -s:指定发送的信号。 
    -p:模拟发送信号。 
    -l:指定信号的名称列表。 
    -a:当处理当前进程时,不限制命令名和进程号的对应关系;
    -u:指定用户。
    pid:要中止进程的ID号。 
    Signal:表示信号。
参数
    进程或作业识别号:指定要删除的进程或作业
  • 显示当前系统可用信号: kill –l,trap -l
常用信号:man 7 signal
    1) SIGHUP: 无须关闭进程而让其重读配置文件  
    2) SIGINT: 中止正在运行的进程;相当于Ctrl+c
    3) SIGQUIT:相当于ctrl+\
    9) SIGKILL:强制杀死正在运行的进程
    15) SIGTERM:终止正在运行的进程(默认为15)
    18) SIGCONT:继续运行
        kill -18 3298 将进程ID为3298的程序继续后台运行,停止后台休眠   
    19) SIGSTOP:后台休眠
        kill -19 3298 将进程ID为3298的程序放后台休眠  
指定信号的方法:
    (1)信号的数字标识:1,2,9
    (2)信号完整名称:SIGHUP 
    (3)信号的简写名称:HUP
  • 按PID :kill [-SIGNAL] pid …
kill –n SIGNAL pid;kill –s SIGNAL pid
kill -9 1200 
  • 按名称:killall [-SIGNAL] comm…
killall -9 bash   杀死bash程序的所有进程   
  • 按模式:pkill [options] pattern
-SIGNAL
-u uid:effective user,生效者
-U uid: real user,真正发起运行命令者
-t terminal:与指定终端相关的进程
    kill -t /dev/pts/1 杀死/dev/pts/1终端的进程   
-l:显示进程名(pgrep可用)
-a:显示完整格式的进程名(pgrep 可用)
-P pid: 显示指定进程的子进程
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,456评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,370评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,337评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,583评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,596评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,572评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,936评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,595评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,850评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,601评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,685评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,371评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,951评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,934评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,167评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,636评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,411评论 2 342

推荐阅读更多精彩内容