Как я могу узнать абсолютный путь бегущего процесса?
Если у меня есть несколько копий одного и того же приложения на диске, и только одна из них запущена, как я вижу с ps
, как я могу узнать абсолютный путь, чтобы отличить его от других?
Если у меня есть несколько копий одного и того же приложения на диске, и только одна из них запущена, как я вижу с ps
, как я могу узнать абсолютный путь, чтобы отличить его от других?
ps auxwwwe
Источник: https://serverfault.com/questions/62322/getting-full-path-of-executables-in-ps-auxwww-output
Изоф - это вариант. Вы можете попробовать что-нибудь вроде ниже:
lsof -p PROCESS_ID
В этом списке будут перечислены все файлы, открытые процессом, включая фактическое местоположение исполняемого файла. Затем можно добавить еще несколько awk, cut, grep и т.д., чтобы узнать информацию, которую вы ищете.
В качестве примера, я выполнил следующие команды, чтобы определить, откуда взялся мой процесс ‘java’:
lsof -p 12345 | awk ‘{print $NF}’ | grep ‘java$’.
Быстрый ответ - использовать ps
с опциями или информацию о файловой системе /proc
. Это будет обычно работать, но не гарантировано. В общем, определенного, гарантированного ответа нет. Например, что, если исполняемый файл будет удален во время выполнения, так что пути к файлу не будет?
Смотрите Unix FAQ для более подробной информации, в частности, вопросы 4.3 и 4.4.