Если я вижу процесс, использующий использование ps -e
, как я могу найти файл, который запустил его?
Если я вижу процесс, использующий использование ps -e
, как я могу найти файл, который запустил его?
Ответы:
В Linux: если вы знаете PID, вы можете указать файл cmdline для этого файла. Например:
cat /proc/PID/cmdline
Это может произойти сбой, если двоичный файл был перемещен после запуска программы.
И конечно:
lsof -n | grep PID | grep ' txt '
и:
ls -la /proc/PID/exe
которая является символической ссылкой на исполняемый файл.
/proc/PID/cmdline
нет символа новой строки, поэтому вы, вероятно, захотите сделать что-то подобное cat /proc/PID/cmdline ; echo ''
.
tr '\0' ' ' < /proc/PID/cmdline ; echo ''
Скопируйте идентификатор процесса из ps -e
команды, а затем выполните следующее:
ps x | grep <process-id>
Ни один из методов ( ls
, lsof
или cat
) в других ответов не работает для меня. Если я сделаю:
$ nano test.txt
Это мой победитель
$ pgrep -f -l test
3074 nano test.txt
Или, чтобы получить только PID, чтобы использовать его в программировании:
$ pgrep -f test
3074
Протестировано на Kali Linux v1.0.6 (на основе Debian).
По сравнению с простым ls
, я должен признать, что это не очень портативное решение, но, по крайней мере, оно работает.