Когда я пытаюсь закрыть вкладку в Gnome Terminal, она говорит:
Закрыть этот терминал? В этом терминале все еще выполняется процесс. Закрытие терминала убьет его.
Как я могу узнать, что еще работает? Обратите внимание, что в выводе ничего нет jobs
. Спасибо.
screen
,tmux
,script
,ssh
,mc
и перевернул панели от, или просто другой оболочки , например , набравbash
, или что - то вдоль этих линий. Нажмите Ctrl + D или введите,exit
чтобы выйти из вашей оболочки, вы увидите, где вы оказались.exit
этого вкладка терминала gnome не закрывается.exit
, вероятно, закроет его тогда. @egmont Вы можете переместить это в ответ, пожалуйста.Ответы:
Выбирает все процессы, связанные с терминалом.
источник
nohup
команде, отключаются от терминала, поэтому не блокируйте его закрытие. Но они все еще перечислены с этой командой.Вы можете оценить процесс, в котором PID вашей оболочки указан как родительский. Как вы можете или не можете знать, мы можем указать
ps
форматЗдесь мы получаем PID оболочки из специальной переменной
$$
intoSHELLPID
, которая затем может использоваться awk в subshell канала. По сути, мы просто перечисляем процессы в форме NAME, PID, Parent PID и отфильтровываем только тех, кто имеет соответствующий PID в последнем столбце.источник
Если вы запустили какой-то процесс в терминале (например, gedit), то идентификатор процесса (PID) (из bash) и идентификатор родительского процесса (PPID) (из gedit) для этих двух процессов будут одинаковыми. Это можно увидеть на выходе
команда. Чтобы сделать его более читабельным, давайте сначала «передадим» вывод, чтобы
grep
найти PID всех запущенных в настоящее время процессов «bash», а затем снова передаем «по конвейеру»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 в последней команде. Если для «bash» существует более одного PID, вы должны попробовать их все.
Последняя команда просто просматривает выходные данные
ps -ef
и ищет, совпадают ли PID (который вы нашли из предыдущей команды) и PPID для любого процесса.Больше информации:
человек пс
человек awk
источник
Вы можете использовать
htop
. В Ubuntu 16.04 (и выше) вы можете установить его, просто набравsudo apt-get install htop
.Вы также можете использовать
top
.источник
htop
?