Intereting Posts
Команда Shell для удаления первой строки, заключенной с косой чертой Как создать файл, который содержит двоичный номер? Несколько liveCD на одном USB-накопителе Как узнать, что запускает сканирование портов ночью из моего Linux? Печать пространства между строками Обработка аккаунтов-деmonoв, занимающих 100% процессорного времени Почему ssh -g говорит, что адрес уже используется? Соглашения о наименовании разделов GRUB Синтаксическая ошибка: слово «неожиданно» (ожидается «)») при удаленном запуске, но без проблем выполняется локально Как настроить IP-адрес на виртуальной виртуальной машине? Файлы tar для Linux менее 3 месяцев назад, используя дату в filename Как я могу скомпилировать DSniff на Kali Linux? Как форматировать файл во время перемещения? Как интегрировать несколько сценариев Python / Perl для исполнения в одном сценарии bash? Как пропустить файл в sed, если он содержит регулярное выражение?

Как найти идентификатор процесса команды, запущенной в другом терминале?

Если я запустил sleep 30 в одном окне PuTTY, как я могу найти идентификатор процесса команды sleep из другого окна PuTTY?

Команда pgrep

Если в вашем дистрибутиве установлена ​​команда pgrep (например, из пакета procps ), вы можете использовать команду для поиска идентификаторов процессов по шаблону. Например:

 # Find the sleep commands belonging to the current user. pgrep -u $LOGNAME sleep 

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

Тестирование команды pgrep

Вы также можете проверить это на одном TTY или PTY. Рассматривать:

 $ sleep 30 & pgrep -u $LOGNAME sleep [1] 24021 24021 

В этом примере сон помещается в фоновый режим, а Bash сообщает идентификатор задания и идентификатор заданного задания. Затем pgrep находит тот же PID в списке процессов и отправляет PID на стандартный вывод. Очевидно, цифры должны совпадать.

Несколько совпадений

Обратите внимание: если текущий пользователь имеет более одной команды ожидания, то pgrep будет правильно сообщать о нескольких PID. Например, следующее возвращает PID для фоновых заданий %1 и %2 :

 $ sleep 30 & sleep 30 & pgrep -u $LOGNAME sleep [1] 24063 [2] 24064 24063 24064 
 ps -u "your_login" | grep "sleep" | awk '{print $1}'