我正在使用以下脚本检查sqpctl进程的交换:
for file in /proc/*/status ; do awk '/VmSwap|Name|Pid/{printf $2 " " $3}END{ print ""}' $file; done | sort -k 5 -n -r | grep sqpctl
如何获得具有适当流程细节的上述输出?我的意思是,上面的脚本给了我这样的输出:
[20:00:49][root][~]$ for file in /proc/*/status ; do awk '/VmSwap|Name|Pid/{printf $2 " " $3}END{ print ""}' $file; done | sort -k 5 -n -r | grep sqpctl
sqpctl 11691 8979 0 25092 kB
sqpctl 11878 8979 0 24784 kB
sqpctl 12144 8979 0 20180 kB
sqpctl 11351 8979 0 20084 kB
sqpctl 8976 1 0 1476 kB
sqpctl 16210 8979 0 0 kB
sqpctl 16038 8979 0 0 kB
当我运行以下程序时,我会得到sqpctl产生的确切流程细节
[20:10:25][root][~]$ ps -ef | grep sqpctl
rdsdb 8976 1 0 19:27 ? 00:00:00 /u01/sqp/bin/sqpctl -d service start
rdsdb 11326 8979 0 19:34 ? 00:00:11 sqpctl -d sqptaskstr process1
rdsdb 11351 8979 0 19:34 ? 00:00:01 sqpctl -d sqptaskstr process2
rdsdb 11467 8979 0 19:34 ? 00:00:01 sqpctl -d sqptaskstr process3
那么,有没有一种方法可以将ps -ef
与上述循环的交换用法结合起来,并获得确切的进程名称。基本上是这样的:
/u01/sqp/bin/sqpctl 11691 8979 0 25092 kB
process1 11878 8979 0 24588 kB
process2 11467 8979 0 24316 kB
process3 12480 8979 0 21796 kB
process4 11482 8979 0 21592 kB
process5 12441 8979 0 21056 kB
process6 11688 8979 0 20820 kB
这对您有帮助吗:
for file in /proc/*/status ; do awk '/VmSwap|Name/{printf $2 " " $3}END{ print ""}' $file; done | sort -k 2 -n -r | less
样本输出:
php-cgi 11964 kB
php-cgi 11016 kB
php-cgi 10392 kB
php-cgi 10336 kB
squid 6864 kB
lighttpd 4100 kB
php-cgi 3984 kB
php-cgi 3644 kB
php-cgi 3616 kB
php-cgi 3604 kB
rpc.mountd 3580 kB
使用atop
:
atop 3 -P SWP,PRG