通常 的输出ps
在某处有一个 pid。有没有办法将它与 的输出结合起来,最好是一行代码lsof
?
例如
27915 ? Ss 0:03 gpg-agent --daemon
gpg-agent 27915 httpd mem REG 104,1 144776 229236 /lib64/ld-2.5.so
gpg-agent 27915 httpd mem REG 104,1 1718232 229237 /lib64/libc-2.5.so
gpg-agent 27915 httpd mem REG 104,1 23360 229238 /lib64/libdl-2.5.so
...
6139 ? Ss 0:00 /usr/sbin/restorecond
restoreco 6139 root mem REG 104,1 53880 228954 /lib64/libnss_files-2.5.so
restoreco 6139 root 0u CHR 1,3 0t0 1771 /dev/null
...
注意:第一个块的第一行是ps
pid的输出27915
,后面跟着输出lsof -p 27915
;第二个块与 pid 相同6139
。
本质上,我希望通过 pid 连接两个命令,但首先输出第一个命令的行,然后输出具有相同 pid 的第二个命令的行。输出与运行类似的东西不同join -1 2 -2 2 <(ps aux | sort -nk2) <(lsof | sort -nk2)
——这很好用,但将两个输出合并在同一行,产生左侧重复。
答案1
ps -ef | awk '{ print $1 }' | while IFS= read a_pid ; do echo "" ; ps -p $a_pid ; lsof -p $a_pid ; done