Рубрики
Uncategorized

nohup для запуска удаленных скриптов

Я некоторое время осознал ни на ниху, но никогда не потратил время, чтобы сделать более глубокое погружение до сегодняшнего дня. TL; DR … Теги с DevOps, Bash, Shell, командной строкой.

Я знал о 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»