Назад | Перейти на главную страницу

Как объединить выходы 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
...

Примечание: первая строка первого блока является выводом ps для pid 27915 с последующим выводом 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