Как постоянно запускать скрипт Python на сервере EC2? - PullRequest
17 голосов
/ 04 июня 2011

Я настроил сервер Amazon EC2.У меня есть скрипт Python, который должен загружать большие объемы данных из Интернета на сервер.Я могу запустить скрипт из терминала через ssh, однако очень часто я теряю соединение ssh.Когда я теряю соединение, скрипт останавливается.

Есть ли способ, где я говорю скрипту, что он запускается с терминала, а когда я отключаюсь, скрипт все еще работает на сервере?

Ответы [ 3 ]

31 голосов
/ 04 июня 2011

У вас есть несколько вариантов.

  • Вы можете добавить свой скрипт в cron для регулярного запуска.
  • Вы можете запустить скрипт вручную и отсоединить + фон, используя nohup.
  • Вы можете запустить такой инструмент, как GNU Screen, отсоединить терминал и выйти из системы только для того, чтобы продолжить с того места, где вы остановились позже. Я использую это много.
    • Например:
      1. Войдите на свой компьютер, запустите: screen.
      2. Запустите ваш скрипт и либо просто закройте свой терминал, либо отсоедините сеанс должным образом: Ctrl + A, D, D.
      3. Отключите от терминала.
      4. Восстановите соединение через некоторое время и выполните screen -rD. Вы должны увидеть свои вещи так же, как вы оставили их.
  • Вы также можете добавить свой сценарий в /etc/rc.d/, чтобы он вызывался в книге и всегда работал.
8 голосов
/ 06 июня 2011

Вы также можете использовать nohup, чтобы ваш скрипт работал в фоновом режиме или когда вы отключились от сеанса:

nohup script.py &

& в конце команды явно указывает nohup запускать ваш скрипт в фоновом режиме.

1 голос
/ 04 июня 2011

Если это просто утилита, которую вы запускаете ad-hoc, а не какой-либо демон службы, я бы просто запустил ее в screen.Чем вы можете отключиться, если хотите, и снова открыть терминал позже ... Или переподключить терминал, если вас отключили.Он должен быть в вашем менеджере пакетов дистрибутивов Linux.Просто найдите screen

http://www.gnu.org/software/screen/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...