Если у меня есть несколько копий одного и того же приложения на диске, и, как я вижу ps
, запущено только одно, как я могу узнать абсолютный путь, чтобы отличить его от других?
93
% sudo ls -l /proc/PID/exe
например:
% ps -auxwe | grep 24466 корень 24466 0,0 0,0 1476 280? S 2009 0:00 контролировать sshd % sudo ls -l / proc / 24466 / exe lrwxrwxrwx 1 root root 0 фев 1 18:05 / proc / 24466 / exe -> /package/admin/daemontools-0.76/command/supervise
ls
команды.ls: cannot read symbolic link /proc/28783/exe: Permission denied
- дело не в запускеls
команды, а в доступе к информации о процессе, не принадлежащем вам. На моем компьютере около 97% всех процессов, перечисленных в / proc, являются корневыми процессами, а остальные распределены по 11 различным пользователям.Использование:
Это дает вам текущий рабочий каталог pid, а не его абсолютный путь.
Обычно
which
команда скажет вам, что вызывается из оболочки:источник
$pid
?» Отредактированное сообщение все еще не отвечает на вопрос.which
просто говорит "Если команда находится на пути, то что это?"pwdx
верните мне абсолютный путь к исполняемой программе процесса в зависимости от pid на redhat x64 6.3.Одним из способов является ps -ef
источник
Источник:
https://serverfault.com/questions/62322/getting-full-path-of-executables-in-ps-auxwww-output
источник
Быстрый ответ - использовать
ps
опции или информацию о/proc
файловой системе. Это обычно работает, но не гарантируется. В общем, нет определенного, гарантированного ответа. Например, что если исполняемый файл будет удален во время выполнения, чтобы не было пути к файлу?Смотрите Unix FAQ для более подробной информации, особенно вопросы 4.3 и 4.4.
источник
Почему все ожидают, что вы знаете PID? Вот удобный для человека способ:
источник
ps
», поэтому он, вероятно, будет отображать PIDlsof это вариант. Вы можете попробовать что-то вроде ниже:
lsof -p PROCESS_ID
Это перечислит все файлы, открытые процессом, включая фактическое местоположение исполняемого файла. Затем можно добавить еще несколько awk, cut, grep и т. Д., Чтобы найти информацию, которую вы ищете.
В качестве примера я выполнил следующие команды, чтобы определить, откуда появился мой процесс java:
lsof -p 12345 | awk '{print $ NF}' | grep 'java $'
источник
Вы могли бы использовать
или же
чтобы получить абсолютный путь. PID - это процесс.
источник