2014-10-28 2 views
2

Итак, у меня есть длинный сценарий (порядка нескольких дней), скажем execute.sh, который я планирую выполнить на сервере, на котором у меня есть учетная запись пользователя ...Выполнение скрипта, который выполняется, даже если я выхожу из системы

Теперь я хочу выполнить этот скрипт так, чтобы он работал вечно, даже если я выхожу за борт или отключился от сервера? Как это сделать? Чанки

+0

http://en.wikipedia.org/wiki/Cron –

+1

Возможный дубликат [Как сделать программу продолжением работы после выхода из ssh?] (Http://stackoverflow.com/questions/954302/how -to-make-a-program-continue-to-run-after-log-out-from-ssh) – ErlVolton

+1

Возможный дубликат [Linux: предотвращение остановки фонового процесса после закрытия SSH-клиента] (http: // stackoverflow .com/вопросы/285015/Linux-предотвратить-а-фон-процесс-от-бытия-остановленного после закрытия-SSH-клиент) –

ответ

7

У вас есть несколько вариантов. Самым основным будет использовать nohup:

nohup ./execute.sh 

nohup выполняет команду в качестве дочернего процесса и отсоединяется от терминала и продолжает работать, если он получает SIGHUP. Этот сигнал означает sig hangup и будет срабатывать, если вы закроете терминал, и процесс все еще привязан к нему.

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


Вы также можете использовать disown функциональность bash «s. Вы можете запустить скрипт в Баш:

./execute.sh 

Затем нажмите Ctrl + г, а затем введите:

disown 

Процесс теперь будет работать в фоновом режиме, отдельно от терминала. Если вы заботитесь о выходе скриптов вы можете перенаправить вывод в лог-файл:

./execute.sh > execute.log 2>&1 

Другим вариантом было бы установить screen на удаленной машине, запустите команду в сеансе экрана и отсоединить от него. Об этом вы узнаете много уроков.

1

nohup (без зависания) и запустить его в фоновом режиме:

nohup execute.sh & 

Вывод, который обычно пошел бы на экране (STDOUT) будет идти в файл с именем nohup.out.