Как найти PID цикла while?

Я запускаю эту команду в терминале Bash

while [ 0 ]; do i=1; echo $i; done 

Перед запуском этого цикла на другой вкладке gnome-terminal я сделал

 $ps aux | wc -l 192 

Пока цикл все еще работает, я снова сделал

 $ps aux | wc -l 192 

Мои вопросы –

  1. Почему цикл while не получает PID?

  2. Как получить PID отдельных команд, выполняемых внутри цикла while?

2 Solutions collect form web for “Как найти PID цикла while?”

  1. while он не получает свой собственный PID, потому что это ключевое слово оболочки, а не внешняя команда. Вы получите PID, указанный в качестве процесса bash . Чтобы получить PID, вставьте echo $$ внутри цикла while и используйте ps aux | grep '[b]ash' ps aux | grep '[b]ash' чтобы соответствовать PID.

  2. Если какая-либо команда не является встроенной оболочкой, вы можете получить PID обычным способом, например, используя ps , pgrep . В поле идентификатора PPID (Parent Process ID) вы обычно увидите PID оболочки, в котором он запущен.

    Например. чтобы получить информацию о команде foobar внутри цикла оболочки, вы можете:

     ps -ef | grep '[f]oobar' 

    или

     ps aux | grep '[f]oobar' 

    или pgrep :

     pgrep 'foobar' 

    Поскольку будет запущено более одного процесса оболочки, вы должны пойти на подробность и проверить поле PPID в соответствии с PID оболочки.

    Обратите внимание, что при циклизации доступность любого процесса в таблице процессов будет зависеть от времени, в течение которого оно выполняется, и когда вы проверяете таблицу процессов.

while и echo – встроенные команды оболочки bash – они не получают отдельный PID. Попробуйте добавить команду sleep 1 в список команд. Затем вы увидите новую команду в ps .

  • Убейте только один процесс Java
  • Найти и убить процесс, который использует последовательный порт
  • Найти PHP-процесс, который регистрируется в файле
  • Почему «sudo pkill -HUP -f» nginx: мастер-процесс «возвращает код 129 и нет вывода
  • Какой из следующих кодов будет работать в том же процессе текущей оболочки
  • Напишите на stdin запущенного процесса по случаю
  • Что происходит с фоновыми заданиями после выхода из оболочки?
  • Как определить, запущен ли процесс в терминале невидимым?
  • Как получить переменные окружения очень короткого процесса?
  • Каков наилучший способ определить рабочий каталог для процесса UNIX с помощью «ps»?
  • Какой процесс отправляет TCP SYN на Solaris 10?
  • что вызывает процессы htop без имени?
  • Linux и Unix - лучшая ОС в мире.