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

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

使用命令:ps aux

7166b57b46cd46367f33b5b2ef258fe2.png

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代替,一样的意思

0d3ebea0261a2b8fc3c840c864181d61.png

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

9b55255bb992ed8c5ef2a1bb7e2c2abd.png

换成comm后的输出结果

1f5dc45d62affcccac8586138ae42040.png

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

#ps -eo user,pid,rss,comm

f97ae7c440072e112ee480545baa6513.png

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

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

2d7ca773cc66cd975f228a2e6bd183fa.png

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

#ps -o lstart,comm -p 27314

-p后面跟进程的Pid

89a35a981b7a1f577b17fe2bd6eb10ec.png

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

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

2045165996740263d0e2c4628faca0c5.bmp

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

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

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

bfe26ac91de92574f04f6f98be451094.png

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

d58241bb85501775c0bb260065db68fa.png

OK!

Logo

更多推荐