Различия

Показаны различия между двумя версиями страницы.


Предыдущая версия
commands_process_management [2023/12/29 15:29] (текущий) – [Команды управления заданиями Linux fg, bg, jobs, nohup] darkfire
Строка 1: Строка 1:
 +====== Команды управления заданиями Linux fg, bg, jobs, nohup ======
 +{{htmlmetatags>
 +metatag-description=(Откройте для себя ключевые команды для управления задачами в Linux, включая bg, fg, jobs, nice, и renice.)
 +}}
 +Управление заданиями - это механизм для отслеживания процессов, которые порождаются из текущего сеанса работы с терминалом. Можно запустить любое число заданий. Они могут работать, завершиться или находиться в других состояниях. Для управления заданиями можно использовать несколько команд, чтобы проследить результаты их работы или потребовать от системы уведомления об окончании задания.
  
 +В Linux существует три основных типа процессов:
 +  - Процессы переднего плана (или «интерактивные процессы») — инициализируются и управляются с помощью терминального сеанса. То есть процессы запущенные пользователем в командной строке.
 +  - Фоновые процессы (или «автоматические процессы») — это процессы, не подключенные к терминалу; они не ожидают пользовательского ввода данных. Таким образом, другие процессы могут выполняться параллельно с процессом, запущенным в фоновом режиме, поскольку им не нужно ждать его завершения.
 +  - Демоны (англ. «daemons») — это особый тип фоновых процессов, которые запускаются при старте системы и продолжают работать в виде службы.
 +===== Запуск задания в фоновом режиме =====
 +
 +Фоновый режим позволяет продолжить использование сеанса работы с терминалом, пока выполняется команда. Для запуска команды в фоновом режиме, достаточно к команде добавить символ амперсанд (&). Командный интерпретатор вернет номер задания и идентификатор процесса:
 +<code>
 +$ make &
 +[2] 254
 +$</code>
 +
 +Если задание не требует от пользователя ввода, оно продолжает свою работу до полного завершения. Если команде нужен ввод, она переходит в состояние ожидания, на экран выводится соответствующее уведомление, которое выглядит примерно так:
 +
 +  [1] + Suspended (tty input) programm 0
 +
 +В данном случае в ожидании ввода приостановилось выполнение программы programm. Пользователю необходимо перевести из фонового режима в привилегированный и выполнить ввод.
 +
 +<panel type="primary">Если вы хотите, чтобы после вашего выхода из системы(консоли) процесс в фоновом режиме продолжал выполняться, то вам необходимо использовать команду [[nohup]].</panel>
 +===== jobs просмотр состояния запущенных заданий =====
 +
 +С помощью команды jobs пользователь имеет возможность просмотреть состояние своих заданий и получит список всех заданий запущенных в сеансе работы с терминалом.
 +<code bash>
 +$ jobs
 +[1]   Stopped (user)          du
 +[2]-  Stopped (user)          du -a /home/intdbi
 +[3]+  Stopped (user)          du -r /home/intdbi
 +$</code>
 +
 +Команда jobs принимает два флага. Флаг -l включает идентификатор процесса с номером задания.
 +<code bash>
 +$ jobs -l
 +[1]   1351 Stopped (user)          du
 +[2]-  1381 Stopped (user)          du -a /home/intdbi
 +[3]+  1383 Stopped (user)          du -r /home/intdbi
 +$</code>
 +
 +Флаг -р заменяет номер задания на идентификатор процесса.
 +<code bash>
 +$ jobs -p
 +1351
 +1381
 +1383
 +$</code>
 +
 +Идентификатор процесса может использоваться при обращении к команде [[ps]].
 +===== Номера заданий =====
 +
 +Номер задания позволяет командному интерпретатору наблюдать за процессами. Его можно рассматривать как головной элемент группы процессов, поскольку пользовательское задание порождает любые команды либо в конвейере, либо, как подзадания.
 +===== fg перевод задания в привилегированный режим (передний план) =====
 +
 +Команда fg переводит задания в привилегированный режим. При наличии приостановленного задания, его можно сделать привилегированным (перевести на передний план) с помощью команды fg #номер_задания (или fg номер_задания в bash). После этого задание либо выведет на экран сообщение о том, что ему нужно от терминала, либо будет принимать ожидаемый ввод. Переведя задание в привилегированный режим, можно приостановить его выполнение, нажав комбинацию калвиш Ctrl-Z, и заняться им позже.
 +
 +Любое задание из списка, предоставленного командой jobs, доступно, если пользователь захочет сделать его привилегированным, даже в том случае, когда оно уже работает в фоновом режиме. Если в этом списке приведено только одно задание, то при использовании команды fg пользователю не нужно задавать его номер. Если номер задания не задан, предполагается текущее задание.
 +===== bg перевод задания в фоновый режим =====
 +
 +С помощью команды bg (background) можно возобновить в фоновом режиме работу приостановленного или остановленного задания. Для этого нужно указать соответствующий номер задания, после чего оно перейдет в фоновый режим, и будет работать до своего завершения, или пока ему снова не потребуется ввод с терминала.
 +
 +Пример использования bg:
 +
 +  - Запустите процесс (например, vim).
 +  - Приостановите его, нажав Ctrl + Z.
 +  - Выполните bg, чтобы продолжить выполнение приостановленного процесса в фоне.
 +===== wait команда ожидания завершения процесса =====
 +
 +Это последняя существенная команда управления заданиями. При вводе wait приостанавливается работа командного интерпретатора до тех пор, пока не будут завершены все фоновые задания. Сюда входят и любые остановленные задания, поэтому при вводе wait стоит убедиться, что все фоновые задания работают. Команда wait может также принимать в качестве параметра номер задания. В этом случае командный интерпретатор приостанавливается до тех пор, пока не завершится выполнение указанного задания.
 +===== nice задать приоритет выполнения =====
 +Команда nice запускает новую задачу с заданным уровнем приоритета (низкое значение приоритета означает более высокий приоритет).
 +
 +Пример использования:
 +
 +  - Запустите задачу с изменённым приоритетом, например: <file bash>
 +nice -n 5 find / -name "myfile.txt"
 +</file>
 +  - Значение -n 5 задаёт приоритет задачи.
 +===== renice изменить приоритет уже запущенного процесса =====
 +renice изменяет приоритет уже запущенного процесса.
 +
 +Пример использования:
 +
 +  - Сначала найдите идентификатор процесса (PID) с помощью ps.
 +  - Затем измените приоритет с помощью renice. Например: renice -n 10 -p 1234, где 1234 - это PID процесса.
 +
 +===== Заключение =====
 +Эти команды позволяют эффективно управлять процессами и ресурсами в Linux, оптимизируя работу системы в соответствии с вашими потребностями.

📌 Удобный подбор VPS по параметрам доступен на DIEGfinder.com - официальном инструменте проекта DIEG. Это часть единой экосистемы, созданной для того, чтобы помочь быстро найти подходящий VPS/VDS сервер для любых задач хостинга.

📌 Для тестирования скриптов, установщиков VPN и Python-ботов рекомендуем использовать надежные VPS на короткий срок. Подробнее о быстрой аренде VPS для экспериментов - читайте здесь.

💥 Подпишись в Телеграм 💥 и задай вопрос по сайтам и хостингам бесплатно!