Как постоянно запускать Python script на сервере EC2?
Я установил сервер Amazon EC2. У меня есть Python script, который должен загружать большие объемы данных из Интернета на сервер. Я могу запустить script с терминала через ssh
, однако очень часто я теряю соединение ssh
. Когда я потеряю соединение, останавливается script.
Есть ли способ, когда я говорю script для запуска с терминала, и когда я отсоединяюсь, script все еще работает на сервере?
Ответы
Ответ 1
У вас есть несколько вариантов.
- Вы можете добавить свой script в
cron
для регулярного запуска.
- Вы можете запустить свой script вручную и отсоединить + фон, используя
nohup
.
- Вы можете запустить такой инструмент, как GNU Screen, и отсоединить терминал и выйти из системы, только чтобы продолжить, когда вы остановились позже. Я использую это много.
- Например:
- Войдите в свой компьютер, запустите:
screen
.
- Начните свой script и просто закройте свой терминал или правильно отсоедините сеанс: Ctrl + A, D, D.
- Отключиться от вашего терминала.
- Повторно подключитесь позже и запустите
screen -rD
. Вы должны увидеть свои вещи так же, как вы его оставили.
- Вы также можете добавить свой script в
/etc/rc.d/
для вызова в книге и всегда работать.
Ответ 2
Вы также можете использовать nohup
, чтобы ваш script выполнялся в фоновом режиме или когда вы отключились от сеанса:
nohup script.py &
&
в конце команды явно сообщает nohup
запустить script в фоновом режиме.
Ответ 3
Если это просто утилита, в которой вы запускаете ad-hoc, а не какой-нибудь сервисный демон, я просто запускаю его в screen
. Чем вы можете отключиться, если хотите, и откройте терминал позже. Или снова подключите терминал, если вы отключитесь. Это должно быть в диспетчере пакетов linux distros. Просто найдите screen
http://www.gnu.org/software/screen/