Есть ли способ получить PID всех запущенных экземпляров исполняемого файла в Linux?

1 ответ1

3

Есть несколько способов сделать это; вы можете перечислить все процессы и найти те, которые соответствуют имени исполняемого файла, который вас интересует; или вы можете перечислить все запущенные процессы, которые открыли этот конкретный исполняемый файл.

Например:

# list all processes, grep by filename
$ ps -ef | grep firefox
...(lots of output, need to cut/filter)...

# more specific, e.g., maybe there's also /opt/bin/firefox
$ ps -ef | grep /usr/lib/firefox/firefox
....

(Примечание: в приведенном выше примере, вам нужно добавить grep -v grep если вы пишете это. Просто добавив этот пример для базового исследовательского анализа.)

Пример встроенного, который делает то же самое (в основном):

$ pidof firefox
5915 5892 5851 5809 5753 5509

# more specific
$ pidof /usr/lib/firefox/firefox
5915 5892 5851 5809 5753 5509

Это также может непреднамеренно перечислить различные исполняемые файлы с одинаковыми именами, поэтому требуется некоторая осторожность. Но у него действительно хороший, краткий вывод, отличный для написания сценариев.

Наконец, довольно надежный вариант - перечислить открытые файлы (lsof {program}) и найти соответствующие процессы, которые их открывают (исполняемый файл {program} "открыт для чтения" во время работы):

# note: sudo not always necessary, but might be
$ lsof /usr/lib/firefox/firefox
...

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