Я знал о Nohup
Некоторое время, но никогда не потратил время, чтобы сделать более глубокое погружение до сегодняшнего дня.
TL; DR Запустите команду, которая не умрет, когда вы выйдете (полезно для задач на удаленном сервере)
$ nohup my_long_running_script > script_results.out 2>&1 &
Nohup
Утилита позволяет вам запустить другую команду, которая невосприимчивается для зависания, что означает, что он не умрет, когда вы выходите из машины. Это особенно полезно для при подключении к клемме удаленной машины (например, использование SSH
).
Давайте сломаем пример с самого начала:
$ nohup my_long_running_script > script_results.out 2>&1 &
Nohup
Утилита приводит к тому, что скрипт будет забегать к немусу от Бешенство
Сигнал, который отправляется в процесс, когда терминал контролирует его, закрывается.
$ nohup my_long_running_script > script_results.out 2>&1 &
Следующая часть выполняет команду как обычную и отправку вывода в текстовый файл. Поскольку мы собираемся отключить с этого сеанса терминала, мы не будем наблюдать за выходом в реальном времени, когда сценарий работает. Чтобы захватить вывод, мы направляем вывод в файл Script_Results.out
.
$ nohup my_long_running_script > script_results.out 2>&1 &
2> & 1
Перенаправить Стдерр
к Stdout
, что позволит нам захватить как нормальный выход, так и вывод ошибки в нашем файле результатов.
$ nohup my_long_running_script > script_results.out 2>&1 &
Финал &
Заставляет команду nohup работать на заднем плане, чтобы мы немедленно возвращаемся в оболочку после начала команды.
До этого я мог бы начаться Tmux. или экран Сеанс на удаленной машине, чтобы убедиться, что скрипт не может быть прервана, но Nohup чувствует себя гораздо более прямому.
Оригинал: «https://dev.to/chilcutt/nohup-for-running-remote-scripts-56ah»