我正在用这个脚本检查sqpctl进程的swap。
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进程产生的准确的进程细节。
[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
Name sort -k 5 -n -r:
[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
同上 互换用途 并得到准确的进程名称。基本上是这样的,我用这个脚本检查sqpctl进程的swap:for file in proc*status ; do awk 'VmSwap{printf $2 " " $3}END{printf $2}。
/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