Запуск команды в фоновом режиме linux | Синтаксис
Специальное предложение - скидка 20% на аренду vGPU и Elastic Cloud KVM!

Специальное предложение для тех кто закажет до 31 декабря 2025 г. сервис GPU и виртуальные машины на базе KVM будет действовать скидка на аренду в 20% на весь 2026 г.

Для получения скидки, а также бесплатного тестирования услуг вышлите запрос на адрес sales@lincore.kz в шапке письма укажите "скидка 2025" 

phone dark
support@lincore.kz техническая поддержка

Нюансы запуска команды через фоновый режим Linux

26 сентября 2019 Просмотров 99

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

Фоновый процесс – это любые команды, работа которых была запланирована юзером в принудительном порядке. Такие действия не будут отображаться на мониторе и не заметны рядовому пользователю. Яркий пример процесса – сервер Apache, обслуживающий веб-страницу, а также скрипты оболочек ПО и команды.

Правила синтаксиса

Работу многих команд, задач и скриптов возможно перестроить под фоновый процесс одним добавлением символа «&». Амперсанд следует поставить в командную строку в самый конец функции. После чего он быстро перенесет скрипты и освободит немного свободного места.

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

command & script-name & /path/to/command arg1 arg2 & command-1 | command-2 arg1 & command-1 | command-2 -arg1 -arg2 >/path/to/output &

Как это выглядит

Рассмотрим простой пример перевода некоторой команды ls:

$ ls *.py > output.txt &

Для перевода последующего поискового скрипта нужно будет добавить амперсанд после всего выражения:

find . -iname "*.mp3" > myplaylist.txt &

Обнаружение заданий, работающих через фоновые процессы

Чтобы найти команды и скрипты, которые были переведены в фоновый режим, понадобится команда:

jobs

К примеру:

[1]- Running find / -iname "*.c" 2> /dev/null > /tmp/output.txt &[2]+ Running grep -R "hostNamed" / 2> /dev/null > /tmp/grep.txt &

В этом выражении [1] и [2] являются идентификаторами задания. Для их дальнейшего отображения через идентификатор процесса нужно будет ввести -l:

jobs –l

К примеру:

[1]- 7307 Running find / -iname "*.c" 2> /dev/null > /tmp/output.txt &[2]+ 7324 Running grep -R "hostNamed" / 2> /dev/null > /tmp/grep.txt &

Если нужно показать только идентификатор процесса, следует написать:

jobs -p

К примеру:

73077324

Удаление скриптов, функционирующих через фоновый режим

Если юзеру понадобилось постепенно или принудительно завершить фоновый процесс одной из задач, следует воспользоваться командой «kill»:

kill PIDkill -15 PIDkill -9 PIDkillall process-Name-Herekillall -15 process-Name-Herekillall -9 process-Name-Here

Перемещение фонового процесса на место приоритетного

Для выполнения перемещений используется:

%JOB-ID

Либо

fg JOB-ID

Поначалу выводятся все текущие фоновые процессы при помощи синтаксиса:

jobs -l

К примеру:

[1]- 7307 Running find / -iname "*.c" 2> /dev/null > /tmp/output.txt &[2]+ 7324 Running grep -R "hostNamed" / 2> /dev/null > /tmp/grep.txt &

Перевод задания со вторым идентификатором осуществится благодаря команде:

%2 ЛИБО fg 2

Как можно вывести данные:

grep -R "hostNamed" / 2> /dev/null > /tmp/grep.txt

Если потребуется приоритетные задания сделать снова фоновыми, достаточно будет удерживать «CTRL» и одновременно нажать «Z». Все работающие приоритетные задачи будут остановлены на некоторое время.

Возвращение к фоновому режиму будет проводиться так:

%2 & ЛИБО bg

Таким образом «grep» вернется к фоновому режиму.

Наиболее полезные команды

ОписаниеКоманда
Покажет все выполняемые задания, а также их идентификаторы.jobs jobs -l ps aux
Переведет команду или скрипт для работы в приоритетном режиме.command & /path/to/command & /path/to/script arg1 &
Переведет фоновое задание для работы в приоритетном режиме.fg n %n
Переведет команду обратно к фоновому режиму, не запрашивая его отмену.bg n %n &

Под «n» подразумевается идентификационный номер заданий, он выводится при выполнении команды «jobs».

Предыдущий пост Добавление правила в Windows Firewall (Брандмауэр Windows)
Следующий пост Утилита PS в Linux для вывода процессов на экран

Остались вопросы?

Задайте их нашему эксперту и получите квалифицированную консультацию

Оставить заявку