В Linux команда jobs
используется при управлении процессами (заданиями), запущенными в фоновом режиме или остановленными.
Утилита важна для многозадачности в одном окне терминала и одновременного управления несколькими процессами.
Содержание
- Синтаксис
- Параметры
- Статус выхода
- Введение
- Использование в Linux команды jobs
- Пояснение
- Запуск задания в фоновом режиме
- Статус запущенных заданий
- Отображение лишь идентификатора процесса
- Остановка процесса
- Убийство процесса
- Заключение
Синтаксис
$ jobs [-lnprs] [задание ...] или jobs -x команда [аргументы]
Параметры
-l
Перечисляет идентификаторы процессов в дополнение к обычной информации
-n
Перечисляет лишь процессы, статус которых изменился с момента последнего уведомления
-p
Перечисляет лишь идентификаторы процессов
-r
Ограничивает вывод запущенных заданий
-s
Ограничивает вывод остановленных заданий
Статус выхода
0
Успешное завершение
>0
Произошла ошибка
При указании опции -x
, возвращает статус завершения команды.
Введение
Управление заданиями — это возможность останавливать/приостанавливать выполнение процессов (команд) и продолжать/возобновлять их выполнение в соответствии с вашими требованиями. Утилита jobs
является частью вашей операционной системы Linux и оболочки, например bash. Она позволяет отобразить таблицу заданий, выполняемых в данный момент.
Использование в Linux команды jobs
Пояснение
В команде перечисляются активные задания. JOBSPEC ограничивает вывод этим заданиям. Без опций отображается состояние всех активных заданий.
При указании опции -x
, команда запустится лишь после того, как все спецификации задания будут заменены идентификатором процесса лидера группы процессов этого задания.
Задания, запущенные в фоновом режиме, можно не только остановить, но и убить. Это необходимо для освобождения памяти от уже ненужных заданий. Всё это можно показать на простом примере.
Запуск задания в фоновом режиме
В качестве пример запускаем в фоновом режиме калькулятор:
oleg@mobile:~:$ galculator &
[1] 64446
oleg@mobile:~:$
Статус запущенных заданий
Отображаем статус заданий в текущей оболочке, используя опцию -l
:
oleg@mobile:~:$ jobs -l
[1]+ 64446 Запущен galculator &
oleg@mobile:~:$
Отображение лишь идентификатора процесса
Отображаем лишь идентификатор процесса для задания, имя которого начинается с g
. Используем также опцию -p
:
oleg@mobile:~:$ jobs -p %g
64446
oleg@mobile:~:$
Остановка процесса
Останавливаем процесс, используя утилиту kill
с опцией -s
и идентификаторы процесса:
oleg@mobile:~:$ kill -s stop 64446
[1]+ Остановлен galculator
oleg@mobile:~:$
Проверяем:
oleg@mobile:~:$ jobs -l
[1]+ 64446 Остановлено (сигнал) galculator
oleg@mobile:~:$
Убийство процесса
Для убийства процесса необходимо знать номер сигнала SIGKILL утилиты kill
.
Список сигналов команды kill
:
oleg@mobile:~:$ kill -l
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP
6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1
11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM
16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ
26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR
31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3
38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8
43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7
58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2
63) SIGRTMAX-1 64) SIGRTMAX
oleg@mobile:~:$
Убиваем процесс, запуская утилиту kill
с номером сигнала 9 и идентификаторы процесса:
oleg@mobile:~:$ kill -9 64446
oleg@mobile:~:$
Проверяем:
oleg@mobile:~:$ jobs -l
[1]+ 64446 Убито galculator
oleg@mobile:~:$
Всё отлично!
Заключение
В операционной системе Linux команда jobs
проста и важна. Она позволяет просматривать и управлять в одном терминальном окне целой группой команд, запущенных в фоновом режиме.