Назад | Перейти на главную страницу

Как отправить задания в фон, не останавливая их?

Ctrl + z отправляет текущее задание в фоновый режим, но останавливает его.

А как возобновить приостановленную работу?

вы можете запустить «bg», чтобы запустить его в фоновом режиме.

"fg" перемещает его на передний план

Обратите внимание, что bg и fg принимают номера заданий вместо PID, поэтому, если у вас одновременно выполняется несколько заданий, используйте команду «jobs», чтобы получить номера заданий.

вы также можете запустить программу как фоновое задание с помощью символа «&» в командной строке.

например

myprogram &

обратите внимание, что вывод (как stdout, так и stderr) по-прежнему будет идти на текущий tty, поэтому обычно рекомендуется перенаправить на / dev / null или в файл журнала, например:

myprogram > ~/program.log 2>&1 &

в любом примере это фоновое задание, как и любое другое, поэтому вы все равно можете вернуть его на передний план с помощью 'fg' (но если вы перенаправили вывод, вы не увидите много).

В bash ввод «bg» переводит задание в фоновый режим до тех пор, пока не заблокируется необходимость ввода. Он будет продолжать выводить в STDERR и STDOUT, что может быть бесполезным. Вы можете ввести "fg", чтобы вернуть задание на передний план.

[adjuster@mx02 ~]$ cp ~/crap/* ~/crap2 
(Ctrl-Z)
[1]+  Stopped                cp ~/crap ~/crap2 

[adjuster@mx02 ~]$ cp ~/crap3/* ~/crap4
(Ctrl-Z)
[2]+  Stopped                cp ~/crap3/* ~/crap

[adjuster@mx02 ~]$ jobs
[1]+  Stopped                cp ~/crap ~/crap2 
[2]+  Stopped                cp ~/crap3/* ~/crap

[adjuster@mx02 ~]$ bg 1
[1]- cp ~/crap ~/crap2 &
[1]-  Exit 1                  cp ~/crap ~/crap2 

[adjuster@mx02 ~]$ fg 2
[adjuster@mx02 ~]$ 

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

nohup task.sh &

Работает в фоновом режиме, вывод идет на nohup.out в текущем каталоге. Продолжает работать при выходе из системы.

Другой вариант - отличный экран утилита, которую можно использовать для одновременного запуска множества процессов без необходимости держать терминал открытым. Он также обеспечивает гораздо более легкое взаимодействие, чем bg и fg.