Я пытаюсь использовать сценарий оболочки для запуска команды. Меня не волнует, когда / когда / как / почему это закончится. Я хочу, чтобы процесс запускался и выполнялся, но я хочу иметь возможность немедленно вернуться к своей оболочке ...
102
nohup
,&
иdisown
, нажмите здесь, чтобы перейти к четвертому ответу .Ответы:
Вы можете просто запустить скрипт в фоновом режиме:
Обратите внимание, что это отличается от помещения
&
внутри вашего скрипта, который, вероятно, не будет делать то, что вы хотите.источник
&
внутри сценария и у вас его нетwait
, фоновая команда будет убита при выходе из сценария.myscript
изменяет среду терминала, например. это команда инициализации терминала, которая не нужна немедленно и может быть отложена, изменит ли она среду терминала?Все просто забыли
disown
. Итак, вот резюме:&
помещает работу в фоновый режим.disown
удаляет процесс из управления заданиями оболочки, но по-прежнему оставляет его подключенным к терминалу.SIGHUP
(если оболочка получает aSIGHUP
, она также отправляет aSIGHUP
процессу, что обычно вызывает завершение процесса).nohup
отключает процесс от терминала, перенаправляет его выводnohup.out
и экранирует от негоSIGHUP
.SIGHUP
.&
(как фоновая работа).источник
disown
в Debian или OS X. Я думал, что это программа, но, похоже, ошибаюсь. Что это?не зависает при закрытии терминала. вывод по умолчанию идет на nohup.out
Вы можете комбинировать это с фоном,
и избавьтесь от вывода,
вы также можете
disown
команду. типаcmd
,Ctrl-Z
,bg
,disown
источник
tail nohup.out
, при этом будут отображаться последние 10 строк вывода команды. Я использую это для заданий резервного копирования rsync, чтобы узнать, в каком файле он сейчас находится.jobs
.В качестве альтернативы, после того, как вы запустили программу, вы можете нажать Ctrl-Z, что остановит вашу программу, а затем ввести
который помещает вашу последнюю остановленную программу в фоновый режим. (Полезно, если вы начали что-то без '&' и все еще хотите, чтобы это было в фоновом режиме без перезапуска)
источник
screen -m -d $command$
запускает команду в отключенном сеансе. Вы можете использоватьscreen -r
для присоединения к запущенному сеансу. Это замечательный инструмент, чрезвычайно полезный также для удаленных сеансов. Подробнее читайте на сайтеman screen
.источник