Запуск команд Linux в фоновом и приоритетном режимах

Если у вас в терминале запущено долгоиграющее приложение, не всегда целесообразно дожидаться его завершения. Зачем держать терминал занятым для одной определенной команды? В Linux вы можете отправить команду или процесс в фоновый режим, чтобы команда выполнялась, и при этом выполнять другие команды в терминале.

В этой статье мы рассмотрим пару способов отправить процесс в фоновом режиме и как вернуть фоновые процессы в приоритетные.

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

Чтобы запустить команду Linux в фоновом режиме, нужно добавить амперсанд (&) в конце команды, например так:

your_command &

Для примера возьмем простую команду sleep и отправим ее в фоновый режим:

$ sleep 60 &

После завершения выполнения команды в фоновом режиме, появится информация об этом в терминале:

[1]+  Завершён        sleep 60

Можно отправить уже запущенный процесс в фоновый режим.

В этом случае используем сочетание клавиш Ctrl + Z, чтобы приостановить запущенный процесс, а затем использовать bg (сокращение от background), чтобы отправить процесс в фоновый режим. После этого приостановленный процесс будет работать в фоновом режиме.

running_command
^z
bg

Попробуем

[test@test-pc ~]$ sleep 60
^Z
[1]+  Остановлен    sleep 60
[test@test-pc ~]$ bg
[1]+ sleep 60 &

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

Для этого вводим нижеприведенную команду в терминал:

$ jobs

Эта команда выведет все запущенные в фоновом режиме задания/процессы/команды:

jobs [1] Запущен firefox & [2]- Запущен gedit & [3]+ Завершён vim

Итак, мы научились запускать команды в фоновом режиме. Но как насчет того, чтобы вывести процесс, работающий в фоновом режиме, снова в приоритет?

Чтобы отправить команду в фоновый режим, мы использовали bg. Чтобы вернуть фоновый процесс обратно, используем команду fg (foreground).

$ fg

Если мы просто используем команду fg, он выведет последний процесс в очереди фоновых заданий в приоритет. В нашем предыдущем примере запуск fg вернет редактор Vim в терминал.

Если нужно вывести определенный процесс в приоритет, необходимо указать его идентификатор задания. Идентификатор задания - это число, которое мы видим в начале каждой строки в выходных данных команды jobs.

$ fg n

, где n - это идентификатор задания, отображаемый в выходных данных команды jobs.

Источник