Управление заданиями - это механизм для отслеживания процессов, которые порождаются из текущего сеанса работы с терминалом. Можно запустить любое число заданий. Они могут работать, завершиться или находиться в других состояниях. Для управления заданиями можно использовать несколько команд, чтобы проследить результаты их работы или потребовать от системы уведомления об окончании задания.
В Linux существует три основных типа процессов:
Фоновый режим позволяет продолжить использование сеанса работы с терминалом, пока выполняется команда. Для запуска команды в фоновом режиме, достаточно к команде добавить символ амперсанд (&). Командный интерпретатор вернет номер задания и идентификатор процесса:
$ make & [2] 254 $
Если задание не требует от пользователя ввода, оно продолжает свою работу до полного завершения. Если команде нужен ввод, она переходит в состояние ожидания, на экран выводится соответствующее уведомление, которое выглядит примерно так:
[1] + Suspended (tty input) programm 0
В данном случае в ожидании ввода приостановилось выполнение программы programm. Пользователю необходимо перевести из фонового режима в привилегированный и выполнить ввод.
Если вы хотите, чтобы после вашего выхода из системы(консоли) процесс в фоновом режиме продолжал выполняться, то вам необходимо использовать команду Использование nohup в Linux для запуска скриптов в фоновом режиме.
С помощью команды jobs пользователь имеет возможность просмотреть состояние своих заданий и получит список всех заданий запущенных в сеансе работы с терминалом.
$ jobs [1] Stopped (user) du [2]- Stopped (user) du -a /home/intdbi [3]+ Stopped (user) du -r /home/intdbi $
Команда jobs принимает два флага. Флаг -l включает идентификатор процесса с номером задания.
$ jobs -l [1] 1351 Stopped (user) du [2]- 1381 Stopped (user) du -a /home/intdbi [3]+ 1383 Stopped (user) du -r /home/intdbi $
Флаг -р заменяет номер задания на идентификатор процесса.
$ jobs -p 1351 1381 1383 $
Идентификатор процесса может использоваться при обращении к команде Использование ps для мониторинга процессов.
Номер задания позволяет командному интерпретатору наблюдать за процессами. Его можно рассматривать как головной элемент группы процессов, поскольку пользовательское задание порождает любые команды либо в конвейере, либо, как подзадания.
Команда fg переводит задания в привилегированный режим. При наличии приостановленного задания, его можно сделать привилегированным (перевести на передний план) с помощью команды fg #номер_задания (или fg номер_задания в bash). После этого задание либо выведет на экран сообщение о том, что ему нужно от терминала, либо будет принимать ожидаемый ввод. Переведя задание в привилегированный режим, можно приостановить его выполнение, нажав комбинацию калвиш Ctrl-Z, и заняться им позже.
Любое задание из списка, предоставленного командой jobs, доступно, если пользователь захочет сделать его привилегированным, даже в том случае, когда оно уже работает в фоновом режиме. Если в этом списке приведено только одно задание, то при использовании команды fg пользователю не нужно задавать его номер. Если номер задания не задан, предполагается текущее задание.
С помощью команды bg (background) можно возобновить в фоновом режиме работу приостановленного или остановленного задания. Для этого нужно указать соответствующий номер задания, после чего оно перейдет в фоновый режим, и будет работать до своего завершения, или пока ему снова не потребуется ввод с терминала.
Пример использования bg:
Это последняя существенная команда управления заданиями. При вводе wait приостанавливается работа командного интерпретатора до тех пор, пока не будут завершены все фоновые задания. Сюда входят и любые остановленные задания, поэтому при вводе wait стоит убедиться, что все фоновые задания работают. Команда wait может также принимать в качестве параметра номер задания. В этом случае командный интерпретатор приостанавливается до тех пор, пока не завершится выполнение указанного задания.
Команда nice запускает новую задачу с заданным уровнем приоритета (низкое значение приоритета означает более высокий приоритет).
Пример использования:
nice -n 5 find / -name "myfile.txt"
renice изменяет приоритет уже запущенного процесса.
Пример использования:
Эти команды позволяют эффективно управлять процессами и ресурсами в Linux, оптимизируя работу системы в соответствии с вашими потребностями.