Убить все остановленные задания Linux

Kill All Stopped Jobs Linux



В Linux под заданием понимается процесс, запущенный и управляемый оболочкой. Это может быть одна команда, длинная и сложная команда оболочки, включая каналы и перенаправления, исполняемый файл или сценарий. Каждое задание в Linux управляется путем назначения последовательного IP-адреса задания, связанного с определенным процессом.

Ключевое понятие о заданиях Linux для понимания - это их статусы. У заданий Linux есть два основных статуса:







  • Передний план
  • Фон

Работа на переднем плане

Задание переднего плана относится к команде или программе, выполняемой в оболочке, и занимает сеанс терминала до его завершения. Примером может быть запуск файлового менеджера или браузера в терминале.



Например, на следующем снимке экрана показано окно терминала с заданием переднего плана.







На изображении выше приглашение оболочки недоступно до закрытия окна Firefox.

Фоновые задания

Противоположность переднему плану - фоновые задания. Чтобы запустить задание в оболочке в качестве фонового задания, мы используем символ амперсанда (&). Использование этого параметра указывает оболочке помещать любые команды перед амперсандом в фоновом режиме и немедленно отображать приглашение оболочки.



В приведенном ниже примере показано, как поместить задание Firefox (в приведенном выше примере) в фоновый режим.

Как видите, приглашение оболочки теперь доступно, несмотря на то, что Firefox все еще работает.

Вы увидите числовые значения, отображаемые для фоновых заданий. Первое значение, обозначенное квадратными скобками ([]), показывает идентификатор задания, а другое значение указывает PID процесса, связанного с заданием.

Как управлять фоновыми заданиями

Команда jobs обрабатывает управление заданиями. Это позволяет просматривать задания в фоновом режиме.

судо рабочие места

Выполнение указанной выше команды показывает фоновые задания, как показано ниже:

Начиная с левой стороны, у нас есть Job ID.

Сразу после скобок идет знак плюса (+) или минуса (-). Знак плюс указывает на то, что это текущее задание, а число минус указывает на следующее задание.

Следующая скобка показывает состояние задания. Это может быть запущено, остановлено, завершено, выполнено или завершено с кодом состояния.

Наконец, последняя часть показывает фактическое название работы.

Показать вакансии с PID

Чтобы показать фоновые задания с соответствующими значениями PID, мы используем флаг -l как:

рабочие места -

Это покажет фоновые задания с их значениями PID, как показано на изображении ниже.

Фоновые задания с выводом

Предположим, у нас есть задание, которое мы хотим запустить в фоновом режиме, выводящее данные на экран. Например, в приведенном выше примере я помещаю команду apt, которая выводит много данных в фоновом режиме, не испортив терминал.

Для этого вы можете перенаправить вывод в / dev / null как:

судо apt-get update > /разработчик/нулевой&

Как перенести фоновую работу на передний план

Мы можем вывести фоновые задания на передний план с помощью команды fg. Например, чтобы перевести задание firefox с идентификатором задания 1 в фоновый режим, мы можем сделать:

фг %1

Это выведет работу на передний план как:

[электронная почта защищена]: ~ $фг %1

Fire Fox

Параметры команды заданий

У команды jobs не так много параметров.

Мы уже обсуждали -l, чтобы показать задания с их идентификаторами процесса.

Другие параметры, которые вы можете передать команде задания, включают:

  • -n - Здесь показаны задания, которые изменили свой статус с момента последнего уведомления. Например, задание, которое перешло из текущего состояния в остановленное.
  • -п - Список только PID заданий.
  • –Только выполнение работ
  • -s - Показывает только остановленные работы.

Как прекратить или убить работу

Мы можем завершить задания, используя команду kill, за которой следует идентификатор задания, подстрока или идентификатор процесса.

Убить с помощью идентификатора задания

Чтобы убить задание с идентификатором задания, мы используем%, за которым следует значение идентификатора, как:

убийство %%

Это убьет текущую работу; это похоже на% +.

Убить задание с подстрокой

Убивая задание с подстрокой, префикс подстроки с%? за которым следует значение подстроки как:

убийство %? гном-калькулятор

ПРИМЕЧАНИЕ : Linux выполняет задания одновременно. Это означает, что он переключается между доступными заданиями, пока они не завершатся. Следовательно, завершение сеанса терминала с запущенными заданиями приведет к прекращению всех ваших заданий.

Вам не нужно беспокоиться об этом, если вы используете терминальный мультиплексор, такой как tmux или screen, так как вы можете повторно подключить их.

Как убить остановившуюся работу

Чтобы убить все остановленные задания, нам нужно связать две команды вместе. Первый получит PID всех остановленных заданий, а следующий уничтожит все предоставленные задания.

Для просмотра остановленных работ воспользуемся командой

рабочие места -s

Эта команда показывает все остановленные задания.

Имея это, мы можем получить PID остановленных заданий и передать их команде kill как:

судо убийство -9 ``рабочие места -п-s``

Это убьет все остановленные задания.

Заключение

В этом руководстве были рассмотрены концепции управления заданиями в Linux и способы получения информации о заданиях. Стоит отметить, что управление заданиями может быть недоступно в зависимости от выбранной вами оболочки.

Спасибо, что прочитали & Happy Shells.