进程管理工具ps详解

时间:2021-10-01 15:45:35

此ps非某ps。

阿拉说的是linux里历史悠久,运维人员人人爱的ps,不是摄影相关的那个哟。不管哪个,都能让人浑身难受,外加回想起某次加班到深夜的惨痛经历。懂的懂的,阿拉过去也是差点成为设计狗,没想到跳出那个ps的坑,还有这个ps等着我。

说多了都是泪啊。进程管理工具ps详解

好奇戳进来的萌宝宝们就姑且当个故事看下去吧。如果姑且不会觉得不耐烦的话。

但愿搜索引擎足够强大。让阿拉的文章也去非专业的领域漏漏脸。

此ps是processes的简写。linux里这种简写的命令还不少呢。有时候出现首字母简写的反而让人觉得不舒服,比如usr,阿拉相当长的一段时间都认为那是user的缩写,然而,事实上,那更多的可能是Unix System Resource。为什么说可能呢?嗨,最初的时候这个目录下放的的确是用户信息,后来有/home了,这家伙就渐渐成为了系统类文件夹,也有说是unix software resources的缩写的。

看吧,就算是IT行业,也不是凡事都有标准的。嘛,理解成技术人员的幽默的话你也算是个及格的初学者了。

processes顾名思义,就是进程。话说英语好学IT真的是个助力啊。

不好也没关系。学linux还能提升英语素养。一套完整的课程下来,说不定四级就能过了呢。进程管理工具ps详解

正题,咳咳。

单敲ps显示当前终端下正在运行的进程。

[root@centos7 usr]# ps
   PID TTY          TIME CMD
  6262 pts/1    00:00:00 bash
  9032 pts/1    00:00:00 ps

第一行有PID、TTY的选项,这个我们下面再说。

ps后可以跟选项,所跟的选项有三种格式――UNIX格式、BSD格式、GNU格式。一般掌握一种格式的也就够用了。关于为什么有这么多格式,可以归结为――这个命令的历史太悠久了。有多悠久呢?

差不多UNIX诞生之初就有了。UNIX诞生于1970年,所以后来分支出的BSD派系和GNU开源LInux都承继了这一命令。阿拉最常使用的CentOS系列命令选项有长选项和短选项之分,短选项对应UNIX格式,长选项对应的,就是GNU格式了。短选项方便,对于初学者却很容易搞混。长选项对英语不好的是个挑战呐。来吧,提高英语能力的机会来了,哈哈。

鉴于英语好的都去直接man ps查看帮助文档了。这里阿拉就省略很少使用,啊不,是基本不用的GUN格式了。

下面是两种格式格式常用的选项。

UNIX格式选项:

    a 显示当前主机所有终端

    x 包括和终端无关的进程(守护进程)

    u 显示所有者(进程的USER――生效的用户名)

    f 缩进显示父子进程

    o 指定显示字段

    k|--sort 排序(按指定选项)

举个例子:

  ps axo pid,cmd,%cpu,%mem 显示当前主机下所有进程,仅显示pid、cmd、%cpu、%mem字段

[root@centos6 ~]#  ps axo pid,cmd,%cpu,%mem   PID CMD                         %CPU %MEM     1 /sbin/init                   0.5  0.0     2 [kthreadd]                   0.0  0.0     3 [migration/0]                0.0  0.0     4 [ksoftirqd/0]                0.0  0.0     5 [stopper/0]                  0.0  0.0     6 [watchdog/0]                 0.0  0.0     7 [events/0]                   0.2  0.0     8 [events/0]                   0.0  0.0     9 [events_long/0]              0.0  0.0    10 [events_power_ef]            0.0  0.0    11 [cgroup]                     0.0  0.0    12 [khelper]                    0.0  0.0    13 [netns]                      0.0  0.0    14 [async/mgr]                  0.0  0.0    15 [pm]                         0.0  0.0    16 [sync_supers]                0.0  0.0    17 [bdi-default]                0.0  0.0    18 [kintegrityd/0]              0.0  0.0    .......(以下省略)

当我们加上f选项时,我们会看到更多的信息。

[root@centos6 ~]# ps auxfUSER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMANDroot          2  0.0  0.0      0     0 ?        S    03:22   0:00 [kthreadd]root          3  0.0  0.0      0     0 ?        S    03:22   0:00  \_ [migrat]root          4  0.0  0.0      0     0 ?        S    03:22   0:00  \_ [ksofti]root          5  0.0  0.0      0     0 ?        S    03:22   0:00  \_ [stoppe]root          6  0.0  0.0      0     0 ?        S    03:22   0:00  \_ [watchd]root          7  0.2  0.0      0     0 ?        S    03:22   0:01  \_ [events]root          8  0.0  0.0      0     0 ?        S    03:22   0:00  \_ [events]root          9  0.0  0.0      0     0 ?        S    03:22   0:00  \_ [events]root         10  0.0  0.0      0     0 ?        S    03:22   0:00  \_ [events]root         11  0.0  0.0      0     0 ?        S    03:22   0:00  \_ [cgroup]root         12  0.0  0.0      0     0 ?        S    03:22   0:00  \_ [khelpe]root         13  0.0  0.0      0     0 ?        S    03:22   0:00  \_ [netns]root         14  0.0  0.0      0     0 ?        S    03:22   0:00  \_ [async/]root         15  0.0  0.0      0     0 ?        S    03:22   0:00  \_ [pm]root         16  0.0  0.0      0     0 ?        S    03:22   0:00  \_ [sync_s]root         17  0.0  0.0      0     0 ?        S    03:22   0:00  \_ [bdi-de]root         18  0.0  0.0      0     0 ?        S    03:22   0:00  \_ [kinteg]...........(以下省略)

事实上,使用o选项时,能指定的还有pid、comm、%cpu、%mem、stat、tty、euser、ruse、euid、ruid、tpgid、sess、pgrp、ppid、pcpu、tid、class、rtprio、ni、pri、psr。嘿嘿,这些用到的时候再man就可以了。知道常用的含义就足够了。

linux学习就像在读一本厚厚的字典,知道使用方法比背下来要轻松的多,也有用的多。毕竟背字典呐,对很多人来说都没有必要的啊。有背下的大神,且受阿拉一拜。进程管理工具ps详解现充去死啊!!!

抱歉,失礼了。IT设计面太广,要真的抓不住重点,想到哪里学到哪里会吃大亏的。阿拉之前不承认,现在……

阿拉没什么故事,只是勉强比常人多了点发叉的脑神经罢了。有段时间阿拉会为老师布置的题目纠结。比如这个http://amelie.blog.51cto.com/12850951/1953359。真正烦的,笔墨根本写不出十分之一。啊啊,那句话说的很好呢――我只是发现了一千条行不通的路。越长大越发现没有绝对的正确,其中的差距呢,如果你觉得还好,那就这样吧。阿拉的不值一提的小毛病,关键时刻却误事的很呢。阿拉想要导向正确答案的能力。而这能力,永远有可进步的余地。

如何尽快从牛角尖里钻出来,大概也算一种看清自己的测试吧,是进步还是咋,最清楚的人,还是自己罢。

常见选项如下:

USER:进程用户

    euser---实际生效的user

    ruser---进程的发起者,表现为进程运行文件的所属主

PID:进程号,每个进程都有唯一的进程编号

%CUP:cup占用率

%MUM:内存占用率

VSZ:虚拟内存,即为系统承诺分配的内存

RSS:真实内存,即进程实际占用的内存

TTY:终端窗口(即位于哪个终端,守护进程显示为?。守护进程为运行在后台,不受任何终端控制的进程,如init。init是开机启动的第一个进程,进程号为0)

time---CPU分配时间片时间总和(单核CPU一次只能运行一个进程,为了多进程同步执行,要进行时间分片,如将1秒分为100个时间片,一时间片为10毫秒。此项为进程占用时间片总时长。不要觉得不可能哦,听歌看视频类的也是可以分片的哦,只不过时间太短人们感觉不到啦!)

stat---进程状态

    R:running,运行态

    S: interruptable sleeping,可中断的睡眠的进程,可手动唤醒

    D: uninterruptable sleeping,不可中断的睡眠得进程,只有在特定系统条件下才会被唤醒

    T: stopped,停止态

    Z: zombie,僵死态。详情见http://blog.csdn.net/qduningning/article/details/7983708。这个还蛮气人的,不过能解决还是出乎阿拉意料了。嘛,也是,Linux so 强大,怎么会解决不了这个呢?进程管理工具ps详解不存在的!http://www.cnblogs.com/Anker/p/3271773.html,怎么说呢,下面这篇更符合阿拉的文风,不要错过哟。

    +: 前台进程(正在使用的)

    l: 多线程进程

    L:内存分页并带锁

    N:低优先级进程

    <: 高优先级进程

start:进程开始运行的时间

s: session leader,会话(子进程)发起者

ni: nice值,即nice优先级(进程优先级的概念大家可以自行搜索下,简单而言就是linux设定了哪些任务优先做,优先级可手动设定)

pri: priority 优先级

rtprio: 实时优先级

psr: processor CPU编号


BSD格式选项:

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

-eFH 缩进显示子进程(-F: 显示更完整格式的进程信息 -H: 以进程层级格式显示进程相关信息

-C 脚本名/命令名 显示某脚本

    ps -C f1.sh o pid,%cpu,cmd 显示f1.sh脚本(脚本需加shebang)

    ps -C ping 搜索ping命令进程

    ps -eo pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,comm 

    ps axo stat,euid,ruid,tty,tpgid,sess,pgrp,ppid,pid,pcpu,comm

Unix格式和BSD格式可以合起来用的,如上。

后面可指定显示的内容也是通用的


ps后还可跟grep进行行内容过滤,这样就可以搜索相应的应用了。不过这里有个专门的命令实现此功能。此命令支持正则表达式哦。

Pgrep

    -u uid: effective user,生效者 

    -U uid: real user,真正发起运行命令者 

    -t terminal: 与指定终端相关的进程 

    -l: 显示进程名 

    -a: 显示完整格式的进程名 

    -P pid: 显示指定进程的子进程 

此外还有个按确切的程序名称的命令pidof:/sbin/pidofpidof bash

举个栗子:

搜索按root身份运行的命令(不加l只显示进程号) pgrep -lu root

搜索saber用户发起的进程 pgrep -lU saber


个人风格太重,希望不会影响到观感体验。>_<

欢迎提建议,不一定会改,但可以切磋之后也说不定。嘿,就这样了。

本文出自 “RightNow” 博客,请务必保留此出处http://amelie.blog.51cto.com/12850951/1963899