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

Когда я пытаюсь закрыть вкладку в терминале Gnome, он говорит:

Закрыть этот терминал? В этом терминале все еще выполняется процесс. Закрытие терминала убьет его.

Как я могу узнать, что еще работает? Обратите внимание, что в выводе jobs ничего нет. Благодаря.

10
задан 14 May 2016 в 17:48

4 ответа

Можно взять пик при процессах, кто перечисляет PID оболочки как родителя. Как Вы можете или не можете знать, мы можем указать ps формат

SHELLPID=$ ; ps -e  -o cmd,pid,ppid | awk -v shell=$SHELLPID  '$NF~shell'   

Здесь, мы получаем PID оболочки от специальной переменной $ в SHELLPID, который затем может использоваться awk в подоболочке канала. По существу мы просто перечисляем процессы на ИМЯ формы, PID, Родитель PID, и отфильтровываем только тех, у кого есть соответствующий PID в последнем столбце.

0
ответ дан 15 May 2016 в 03:48
ps T

Выбирает все процессы, связанные с терминалом.

0
ответ дан 15 May 2016 в 03:48
  • 1
    Мое плохое. Я все еще использовал-h., это конфликтует - СИ или BLOCK_SIZE=si – solsTiCe 27 October 2017 в 07:28

При запуске некоторого процесса в терминале (например, gedit), чем идентификатор Процесса (PID) (удара) и идентификатор Родительского процесса (PPID) (gedit) для этого, два процесса будут тем же. Это видно в выводе

ps -ef

команда. Для создания это более читаемый позволяет, сначала "передают вывод по каналу" к grep для нахождения PID всех процессов "удара" в настоящее время рабочим и, чем "канал" это снова к awk. Эти awk выбирает только PID и поля имени процесса (поле 2 и 8) и выводит его на экран.

ps -ef | grep bash | awk '{print $2 ": " $8}'

числом в выводе является PID. Вы будете использовать его для нахождения, какой процесс был запущен в терминале, который имеет тот PID. Обратите внимание, что может быть больше чем одна строка вывода, если у Вас есть больше чем один открытый терминал. Теперь для нахождения "дочерних" процессов (если таковые имеются), которых терминальные сеансы мы можем использовать эту команду:

ps -ef | awk '{if ($3 == EnterPID) print $2 ": " $8;}'

необходимо ввести номер PID вместо EnterPID в последней команде. Если существует больше чем один PID для "удара", необходимо судить их всех.

последняя команда просто смотрит вывод ps -ef и ищет, если PID (что Вы нашли от предыдущей команды) и PPID является тем же для какого-либо процесса.

[еще 1116] информация:

человек ps

awk

человека
0
ответ дан 15 May 2016 в 03:48
  • 1
    That' s право,-h переопределяет установку BLOCK_SIZE=si. (Я зарегистрировался в Уэйленде Ubuntu 17.10, и он работает таким же образом в 16.04 LTS.) I' m довольный, что это работает на Вас теперь:-), – sudodus 27 October 2017 в 07:35

Можно использовать htop. В Ubuntu 16.04 (и выше), можно установить его только путем ввода sudo apt-get install htop.

можно также использовать top.

0
ответ дан 15 May 2016 в 03:48
  • 1
    Можете Вы объяснять what' s проблема и что Вы пытаетесь сделать? – Sanjay Prajapat 25 November 2017 в 02:51

Другие вопросы по тегам:

Похожие вопросы: