Команда jobs в Linux

Linux 命令大全Справочник команд Linux

jobsявляется встроенной командой в системах Linux/Unix, используемой для просмотра фоновых задач и управления ими в текущем сеансе оболочки. Она позволяет пользователям:

  • Просматривать состояние всех фоновых заданий
  • Управлять переключением заданий между передним планом и фоном
  • Управлять выполнением нескольких параллельных задач

Когда вы запускаете долго выполняющиеся команды в терминале,jobsкоманда поможет вам эффективно управлять этими фоновыми процессами.


Базовый синтаксис

jobs [选项] [作业标识符]

Общие параметры

Опция Описание
-l Показать PID задания (идентификатор процесса)
-p Показать только ID группы процессов задания
-n Показать только задания, статус которых изменился с момента последнего уведомления
-r Показать только выполняющиеся задания
-s Показать только приостановленные задания

Подробные основные возможности

1. Просмотр фоновых заданий

Простейший вариант использования — напрямую ввестиjobsкоманда:

Примеры

$ jobs
[1]  - выполняется    sleep 100 &
[2]  + приостановлен    vim file.txt

Пояснение к выводу:

  • [1]: Номер задания (Job ID)
  • -/+:-указывает на предыдущее задание,+указывает на текущее задание
  • running/stopped: Статус задания
  • Последняя часть — это команда, запустившая задание

2. Отображение подробной информации о процессе

Используйте-lопция для просмотра идентификатора процесса задания:

Примеры

$ jobs -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
$ 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позволяет сохранить работу заданий после закрытия терминала:

Примеры

$ nohup long_running_command &

Вопрос 2: Как сослаться на конкретное задание?

О: Используйте%плюс номер задания:

  • %1: Задание 1
  • %2: Задание 2
  • %+или%%: Текущее задание
  • %-: Предыдущее задание

Вопрос 3: В чем разница между командами jobs и ps?

A:

  • jobsОтображает только задания в текущем сеансе оболочки
  • psОтображает все системные процессы, включая процессы других пользователей и терминалов

Рекомендации по лучшим практикам

  1. Перенаправляйте вывод для фоновых заданий: чтобы вывод не мешал текущему терминалу

    $ command > output.log 2>&1 &
  2. Используйте описательные имена: это упрощает идентификацию разных заданий

    $ (sleep 300; echo "Done") & 
  3. Регулярно проверяйте состояние заданий: предотвращайте накопление большого числа незавершённых заданий

    $ watch -n 60 jobs
  4. Используйте nohup для важных заданий: гарантируйте, что они продолжат работать после отключения терминала

    $ nohup important_command &

Сводная блок-схема

Linux 命令大全Справочник команд Linux

Другие расширения