如何结合ps和lsof的输出

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 ... 

注意:第一个块的第一行是pid为27915ps输出,接着是输出lsof -p 27915 ; 对于pid 6139 ,第二个块是相同的。

本质上我想通过两个命令之间的pid连接,但首先输出第一个命令的行,然后输出第二个命令的行与相同的pid。 输出与运行类似于join -1 2 -2 2 <(ps aux | sort -nk2) <(lsof | sort -nk2) – 这个工作很好,但将两个输出合并在同一行上,产生左侧重复。

 ps -ef | awk '{ print $1 }' | while IFS= read a_pid ; do echo "" ; ps -p $a_pid ; lsof -p $a_pid ; done