Честно говоря, я не могу поверить, что не могу найти решение для этого онлайн. Я столкнулся с несколькими вещами, которые кажутся похожими, но ничего, что действительно делает то, что я хочу...
Я пытаюсь использовать оболочку script для запуска команды. Меня не волнует, если/когда/как/почему он заканчивается. Я хочу, чтобы процесс запускался и запускался, но я хочу иметь возможность сразу вернуться к моей оболочке...
Надеюсь, что это достаточно ясно, я, вероятно, просто пропустил что-то невероятно глупое
Вы можете просто запустить script в фоновом режиме:
$ myscript &
Обратите внимание, что это отличается от размещения &
внутри вашего script, который, вероятно, не будет делать то, что вы хотите.
nohup cmd
не задерживается при закрытии терминала. вывод по умолчанию - nohup.out
Вы можете комбинировать это с фоном,
nohup cmd &
и избавиться от вывода,
nohup cmd > /dev/null 2>&1 &
вы можете также disown
выполнить команду. тип cmd
, Ctrl-Z
, bg
, disown
Кроме того, после запуска программы вы можете нажать Ctrl-Z, которая останавливает вашу программу, а затем введите
Б.Г.
который помещает вашу последнюю остановленную программу в фоновом режиме. (Полезно, если вы начали что-то без "&" и все еще хотите его в backgroung, не перезагружая его)
Все просто забыли disown
. Итак, вот резюме:
&
помещает задание в фоновом режиме.
disown
удаляет этот процесс из управления заданиями оболочки, но он все равно оставляет его подключенным к терминалу.
SIGHUP
(Если оболочка получает SIGHUP
, она также отправляет SIGHUP
в процесс, что обычно приводит к завершению процесса). nohup
отключает процесс от терминала, перенаправляет его вывод на nohup.out
и защищает его от SIGHUP
.
SIGHUP
.&
(в качестве фонового задания).disown
в Debian или OS X. Я думал, что это была программа, но я, кажется, ошибаюсь. Что это?
nohup
и&
disown
, нажмите здесь, чтобы перейти к четвертому ответу .