Команды управления заданиями
В прошлый раз мы узнали о
фоновом выполнении команд и дали определение термину "задание".
Сегодня рассмотрим, встроенные в оболочку средства, которые позволяют управлять заданиями:
bg, fg, jobs, kill.
Давайте для начала запустим в фоне несколько команд
sleep, которые ничего не будет делать в течение заданного времени:
$ sleep 10 & sleep 20 & sleep 30 &
Чтобы выяснить, за какими заданиями следит оболочка, используется команда
jobs:
$ jobs
[1] Running sleep 10 &
[2]- Running sleep 20 &
[3]+ Running sleep 30 &
[1] - номер задания, который используется для идентификации. Полезен, когда необходимо "ткнуть пальцем" в определенный элемент, используя:
fg, bg, kill;
"" (отсутствие знака) - обозначает то, что задание не является ни текущим ни предыдущим, но находится в списке.
"
+" указывает на текущее задание, по отношению к которому будут выполнены команды, если не указывать номер. "
-" указывает на предыдущее задание;
Running - статус задачи. Также возможны: Stopped, Done, Terminated, Killed. Статусы могут меняться в ответ на отправленный сигнал (SIGKILL, SIGSTOP и т.д.);
Теперь выведем второе задание на передний план. Для этого будем использовать команду
fg с указанием номера:
$ fg %2
sleep 20
Если в параметры ничего не вносить, команда выполнится для последнего задания (со знаком +).
Для того, чтобы перенести выполнение в фон и не блокировать терминал, используется
bg.
Для примера запустим задание переднего плана, остановим его выполнение "
Ctrl + Z" и отправим его в фоновый режим:
$ nm-applet
^Z
[1]+ Stopped nm-applet
$ bg
[1]+ nm-applet &
$ jobs
[1]+ Running nm-applet
К целевому заданию также можно обратиться по номеру:
$ jobs
[1]- Stopped sleep 200
[2]+ Running sleep 100 &
$ bg %1
[1]+ sleep 200 &
С заданиями "
kill %n" можно использовать для принудительного завершения:
$ kill %1
[1]+ Terminated sleep 200
По умолчанию отправляется сигнал
SIGTERM, при желании, можно указать любой другой:
$ kill -9 %1
[1]+ Killed sleep 200
🐧 LinuxCamp