Команда jobs в Linux
jobsявляется встроенной командой в системах Linux/Unix, используемой для просмотра фоновых задач и управления ими в текущем сеансе оболочки. Она позволяет пользователям:
- Просматривать состояние всех фоновых заданий
- Управлять переключением заданий между передним планом и фоном
- Управлять выполнением нескольких параллельных задач
Когда вы запускаете долго выполняющиеся команды в терминале,jobsкоманда поможет вам эффективно управлять этими фоновыми процессами.
Базовый синтаксис
jobs [选项] [作业标识符]
Общие параметры
| Опция | Описание |
|---|---|
-l |
Показать PID задания (идентификатор процесса) |
-p |
Показать только ID группы процессов задания |
-n |
Показать только задания, статус которых изменился с момента последнего уведомления |
-r |
Показать только выполняющиеся задания |
-s |
Показать только приостановленные задания |
Подробные основные возможности
1. Просмотр фоновых заданий
Простейший вариант использования — напрямую ввестиjobsкоманда:
Примеры
[1] - выполняется sleep 100 &
[2] + приостановлен vim file.txt
Пояснение к выводу:
[1]: Номер задания (Job ID)-/+:-указывает на предыдущее задание,+указывает на текущее заданиеrunning/stopped: Статус задания- Последняя часть — это команда, запустившая задание
2. Отображение подробной информации о процессе
Используйте-lопция для просмотра идентификатора процесса задания:
Примеры
[1] - 12345 выполняется sleep 100 &
[2] + 12356 остановлено vim file.txt
3. Фильтрация заданий по конкретному статусу
Примеры
$ jobs -r
# Просмотр только остановленных заданий
$ jobs -s
Практические сценарии применения
Сценарий 1: Запуск длительных задач в фоновом режиме
Примеры
$ long_running_command &
# Просмотрите фоновые задания
$ jobs
[1] + выполняется long_running_command &
Сценарий 2: Приостановка и возобновление заданий
Примеры
$ vim file.txt
# Нажмите Ctrl+Z, чтобы приостановить vim
^Z
[1] + приостановлен vim file.txt
# Просмотрите остановленные задания
$ jobs -s
[1] + приостановлен vim file.txt
# Верните vim на передний план
$ fg %1
Сценарий 3: Управление несколькими фоновыми заданиями
Примеры
$ sleep 100 &
$ sleep 200 &
$ sleep 300 &
# Просмотреть все задания
$ jobs -l
[1] 12345 выполняется sleep 100 &
[2] -12356 выполняется sleep 200 &
[3] +12367 выполняется sleep 300 &
# Вернуть задание 2 на передний план
$ fg %2
# Завершить задание 3
$ kill %3
Комбинации команд управления заданиями
jobsОбычно используются вместе с другими командами управления заданиями:
| Команда | Описание | Пример |
|---|---|---|
& |
Поместить команду в фоновый режим | command & |
Ctrl+Z |
Приостановить текущее задание на переднем плане | Комбинация клавиш |
fg |
Вернуть задание на передний план | fg %1 |
bg |
Продолжить выполнение остановленного задания в фоновом режиме | bg %2 |
kill |
Завершить указанное задание | kill %3 |
Часто задаваемые вопросы
Вопрос 1: Почему фоновые задания завершаются после закрытия терминала?
Ответ: По умолчанию фоновые задания связаны с сеансом терминала. Использованиеnohupилиdisownпозволяет сохранить работу заданий после закрытия терминала:
Примеры
Вопрос 2: Как сослаться на конкретное задание?
О: Используйте%плюс номер задания:
%1: Задание 1%2: Задание 2%+или%%: Текущее задание%-: Предыдущее задание
Вопрос 3: В чем разница между командами jobs и ps?
A:
jobsОтображает только задания в текущем сеансе оболочкиpsОтображает все системные процессы, включая процессы других пользователей и терминалов
Рекомендации по лучшим практикам
Перенаправляйте вывод для фоновых заданий: чтобы вывод не мешал текущему терминалу
$ command > output.log 2>&1 &
Используйте описательные имена: это упрощает идентификацию разных заданий
$ (sleep 300; echo "Done") &
Регулярно проверяйте состояние заданий: предотвращайте накопление большого числа незавершённых заданий
$ watch -n 60 jobs
Используйте nohup для важных заданий: гарантируйте, что они продолжат работать после отключения терминала
$ nohup important_command &
Сводная блок-схема

Справочник команд Linux