Если у вас в терминале запущено долгоиграющее приложение, не всегда целесообразно дожидаться его завершения. Зачем держать терминал занятым для одной определенной команды? В 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.