ps的-o选项就是把让ps格式化输出ps你想要的信息,比如只想输出进程的pid、CPU占用率和进程执行命令这三个信息怎么办,你当然可以ps aux全部输出然后切割输出,但是ps的-o选项可以让你很方便的满足上面的需求

    首先看一下ps的输出有那些选项

    使用命令:ps aux

    wKioL1OZGD-xKuReAAIPxDd_uiE399.jpg

USER: 行程拥有者

PID: pid

%CPU: 占用的 CPU 使用率

%MEM: 占用的记忆体使用率

VSZ: 占用的虚拟内存大小(Kbytes)

RSS: 占用的内存大小(Kbytes)

TTY: 终端的次要装置号码 (minor device number of tty)

STAT: 该行程的状态,参数意义如下: 

   D 不可中断 Uninterruptible(usually IO)

   R 正在运行,或在队列中的进程

   S 处于休眠状态

   T 停止或被追踪

   Z 僵尸进程

   W 进入内存交换(从内核2.6开始无效)

   X   死掉的进程

   < 高优先级

   n   低优先级

   s   包含子进程

   +   位于后台的进程组

START: 行程开始时间

TIME: 进程使用掉CPU的时间

COMMAND(args等同):所执行的指令

以上的都可以做为ps的-o后面的参数吗,好了,如果想满足才开始的那个需求,你需要这么写:

#ps -eo pid,%cpu,command

注:command还可以用args代替,一样的意思

wKioL1OZG6vggsE4AAG9vUtlHgE933.jpg

如果下图的只想显示进程名,而不是全部的执行命令怎么办,把command换成comm试试

wKiom1OZHPexAMUmAADKzyrejsQ693.jpg

换成comm后的输出结果

wKioL1OZHPzTNX0PAAA6IbkjOM0396.jpg

如果想列出所有的进程属用户、pid、使用内存大小、进程名,可以写为:

#ps -eo user,pid,rss,comm

wKiom1OZHtagWvIrAAGMWp0Itdg759.jpg


如果想按照使用内存大小排序,用--sort参数

#ps -eo user,pid,rss,comm --sort rss

wKiom1OZHwfx37GbAAGDH4vh8Kw357.jpg

如果想看一个进程的启动时间,可以用lstat来看

#ps -o lstart,comm -p 27314

-p后面跟进程的Pid

wKioL1OZIHnw_Az5AACsfDMbpSU218.jpg

如果想看一个进程的运行时间,可以用etime

#ps -o lstart,etime,comm -p squid进程号

wKiom1O6ASOBhRLsAAMKpHx0LcI926.bmp

第一个红框是启动时间:2014年4月26号 4点34分

第二个红框是启动总时长:72天5小时24分钟21秒


如果想要一个进程的使用内存大小,pid是实时获取,可以用pidof

wKiom1OZIRTwE3IuAABXhtH-pWc121.jpg

看到输出结果好多余了一行备注信息,如果不想要RSS,只想要内存信息,用h参数,h参数的意思是忽略标题

wKioL1OZIbnB3SUQAABcpPofm_g577.jpg

OK!