Как найти 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?

  • Проверьте, открыт ли файл другим процессом
  • Как я могу запустить процесс с любым именем, которое ничего не делает?
  • В чем разница между lsof и fuser -uvm
  • Процесс ест все время процессора
  • Как определить процесс, который не имеет pid?
  • Подождите, пока процесс переднего плана испустит строку, затем отправьте на задний план
  • Gnu Parallel: более одного процессора?
  • Как изменить заголовок команды при запуске сервера?
  • 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 .

    Interesting Posts

    SSH завершает работу после выхода из сценария bash

    печать данных на основе строк в формате таблицы в Linux

    Звук через HDMI на Arch Linux

    Получить имя устройства подключенного USB-диска

    Использование awk для хранения двоичного числа в текстовом файле в виде строки, а затем преобразование в шестнадцатеричное

    oddjob_mkhomedir не запускается при входе через SSH с Kerberos

    403 Запрещенная ошибка при попытке подключения к репозиториям ubuntu

    Разрешения корневого каталога веб-сервера

    От имени файла получите имена точек монтирования, устройства, LV, VG, PV

    тройник и grep одновременно (оболочка)?

    Какие дистрибутивы работают из коробки с планшетными компьютерами?

    Некоторые комбинации клавиш недоступны для пользовательских приложений

    Как я могу основать имя файла с уже существующей переменной?

    Проверьте конфигурацию SSH, не рискуя потерять удаленный доступ

    Ошибка монтирования: сбой подключения: файл существует

    Linux и Unix - лучшая ОС в мире.