3

Можно ли с помощью ps определить, откуда запускается процесс?

У меня есть два приложения, оба одинаковые и работают в параллельных каталогах, таких как /app1/start.sh и /app2/start.sh . Если я запускаю ps -ef то я не могу сказать разницу между двумя

Используя ps (или альтернативу), как я могу сказать, что PID 123 принадлежит app1?

3 ответа3

5

Некоторые примеры:

Текущий список процессов представлен в виде древовидной иерархии и широких выходных данных (с указанием полных аргументов командной строки и без их обрезки после символов X) ps -auxwwwf

Команда pstree , показать все процессы и их идентификаторы процессов: pstree -ap

Или, если вас интересуют только PID: pgrep -f app1 перечислит все PID для процессов, соответствующих шаблону app1 где-нибудь вдоль их имени, аргументов командной строки или пути.

3

Также посмотрите на /proc/ filesystem. В /proc/*pid* вас есть:

  • exe который является символической ссылкой на исполняемый двоичный файл. В случае сценария это интерпретатор (/bin/bash), а не сценарий.
  • cwd который является символической ссылкой на текущий каталог процесса
  • cmdline который является NUL-отделенным представлением командной строки

у вас также есть список текущих файловых дескрипторов. Я считаю /proc/*pid*/fd/255 полезным в скриптах bash - это символическая ссылка на сам скрипт.

ps просматривает /proc /, чтобы найти информацию, поэтому может быть какое-то волшебное заклинание флагов, которое показывает некоторые из них - посмотрите на ps -o

1

Пытаться

PS auxf

Это дает вам иерархию процессов.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .