Відповіді:
% 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 корінь кореня 0 1 лютого 18:05 / proc / 24466 / exe -> /package/admin/daemontools-0.76/command/supervise
ls: cannot read symbolic link /proc/28783/exe: Permission denied
- справа не в запуску ls
команди, а в тому, щоб отримати доступ до інформації про процес, який не належить вам. У моєму вікні приблизно 97% усіх процесів, перелічених у / proc, є кореневими процесами, а інші поширюються на 11 різних користувачів.
Використання:
pwdx $pid
Це дає вам поточний робочий каталог pid, а не його абсолютний шлях.
Зазвичай which
команда підкаже вам, що викликається з оболонки:
#> which vlc
/usr/bin/vlc
$pid
?" Відредагований пост все ще не відповідає на запитання. which
просто говорить: "Якщо команда на шляху, то що це?"
pwdx
поверніть мені абсолютний шлях виконуваної програми процесу залежно від pid на redhat x64 6.3.
Один із способів - ps -ef
ps auxwwwe
Джерело:
https://serverfault.com/questions/62322/getting-full-path-of-executables-in-ps-auxwww-output
Швидка відповідь - використання ps
параметрів або інформації про /proc
файлову систему. Це, як правило, спрацює, але не гарантується. Загалом однозначної, гарантованої відповіді немає. Наприклад, що робити, якщо виконуваний файл буде видалений під час виконання, щоб не було шляху до файлу?
Див . Поширені запитання про Unix для отримання більш детальної інформації, зокрема питань 4.3 та 4.4.
Чому всі очікують, що ти знатимеш PID? Ось дружній для людини спосіб:
pwdx `pgrep ###process_name###`
ps
", тому він, ймовірно, відобразить PID
lsof - це варіант. Ви можете спробувати щось на кшталт нижче:
lsof -p PROCESS_ID
Тут буде перераховано всі файли, відкриті процесом, включаючи фактичне місцезнаходження виконавчого файла. Тоді можна додати ще кілька awk, cut, grep тощо, щоб дізнатися інформацію, яку шукаєте.
Як приклад, я виконав наступні команди, щоб визначити, звідки взявся мій процес "java":
lsof -p 12345 | awk '{print $ NF}' | grep 'java $'
ls
команди.