Есть ли способ получить PID всех запущенных экземпляров исполняемого файла в Linux?
1 ответ
Есть несколько способов сделать это; вы можете перечислить все процессы и найти те, которые соответствуют имени исполняемого файла, который вас интересует; или вы можете перечислить все запущенные процессы, которые открыли этот конкретный исполняемый файл.
Например:
# 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
...