Команда jobs в Linux позволяет пользователю напрямую взаимодействовать с процессами в текущей оболочке.
Задания имеют три возможных состояния в Linux: передний план, фон и остановлено.
— А что это значит? Чуть позже мы объясним подробнее. Сначала давайте рассмотрим некоторые инструменты, встроенные в команду Jobs.
Управление работой имеет несколько различных функций. Каждое можно побежать независимо. Вот таблица команд, связанных с управлением заданиями.
Команда | Описание |
---|---|
jobs | Список заданий в текущей оболочке |
bg %n | Отправить процесс в фоновом режиме |
fg %n | Вывести процесс на передний план |
В таблице n представляет собой номер соответствующего идентификатора задания.
А что вообще такое jobs? Задания, процессы и задачи-это слова, которые часто используются взаимозаменяемо.
На самом деле есть некоторые небольшие различия, которые важны для ясности.
Разница может быть сведена к тому, какая сущность обрабатывает задачи. Пользователи владеют заданиями, а ядро-процессами.
В Linux задание может быть одним процессом или иметь несколько дочерних или подпроцессов.
Примером этого может быть задание, которое содержит несколько переданных команд, таких как эта:
cat file1 | sort | uniq
В персональных вычислениях операционная система обрабатывает большинство процессов автоматически. Это обычно оптимизируется под потребности системы или приоритет, придаваемый определенной задаче. Эти процессы завершаются ядром и получают идентификатор процесса (PID).
Когда вы открываете новую оболочку, у вас есть возможность создавать свои собственные рабочие места. Фактически, это то, что происходит, когда вы вводите любую команду (или серию команд) в терминал.
На уровне пользователя-из оболочки можно вручную отправлять задания для работы в фоновом режиме, выводить их на передний план или приостанавливать (с помощью ctrl+z).
Итак, давайте рассмотрим на практике то, что вы узнали до сих пор, на нескольких примерах.
Отправить задание на работу в фоновом режиме очень просто. Вам просто нужно добавить свою команду с символом & (амперсанд).
terminator@andreyex:~$ nano Linux_AndreyEx & [1] 2860
Вы можете видеть, что эта команда возвращает номер задания в скобках. Следующий номер-это идентификатор процесса, используемый ядром.
Если вы попытаетесь ввести команду jobs, вы можете быть смущены, что ничего не произошло. Это происходит потому, что в оболочке не было активных заданий. Теперь, когда у вас есть запущенное задание, вы можете запустить команду задания успешно.
terminator@andreyex:~$ jobs [1]+ Stopped nano Linux_AndreyEx
Номер PID здесь не указан, но вам он не нужен. Вы управляете заданиями с помощью идентификатора задания пользователя/оболочки.
Вы можете использовать этот идентификатор задания, чтобы вывести свой экземпляр nano на передний план.
terminator@andreyex:~$ fg %1
Если вы следили за этим, это должно привести вас в nano с вашим файлом под названием Linux AndreyEx.
Вы можете остановить открытые задания с помощью ctrl+z.
Вы можете открыть верхнюю часть, используйте ctrl+z, чтобы приостановить его, просмотреть его в списке заданий, а затем вернуть его на передний план перед закрытием.
Хотя вы можете отправлять задания в фоновом режиме с символом &, это всегда хорошо, чтобы иметь альтернативу. На экране вы видели, как я остановил задание с помощью ctrl+z. я вернул задание в оболочку и на передний план с помощью команды fg %n. Вы можете сделать то же самое, используя bg.
Мы собираемся использовать приложение с графическим интерфейсом, чтобы просто переключать вещи. Вы, возможно, заметили в прошлом, что когда вы открываете графический интерфейс из терминала, что если вы закроете терминал, графический интерфейс тоже закроется. Надеюсь, эта статья прояснила для вас, почему это происходит.
Итак, давайте использовать gedit. Мы собираемся сделать следующее:
terminator@andreyex:~$ gedit ^Z [1]+ Stopped gedit terminator@andreyex:~$ bg %1 [1]+ gedit & terminator@andreyex:~$ jobs [1]+ Stopped gedit terminator@andreyex:~$ fg %1 gedit ^C
Многие из нас привыкли использовать ctrl+c для завершения заданий в оболочке. Есть еще один способ сделать это, что включение вашего нового знания контроля работы.
terminator@andreyex:~$ fg %1 gedit ^Z [1]+ Stopped gedit terminator@andreyex:~$ kill %1
Правильно, команда kill может быть использована вместе с идентификатором задания для завершения задания также.
Вывод
Изучение командной строки Linux приближает нас к внутренней работе нашей любимой операционной системы. Контроль учебных заданий дает нам возможность обрабатывать сразу несколько заданий.
Мы надеемся, что вы нашли что-то новое для изучения с этой статьей. Если вам понравилось, пожалуйста, сообщите нам об этом в разделе комментариев ниже или используйте ссылки, чтобы поделиться в социальных сетях.