Описание проблемы: Через консоль запускаем python-скрипт, но как только отключаемся от сервера - скрипт перестаёт работать. Пробовали запустить с помощью screen (модуль, который создаёт параллельные рабочие столы), однако в случае падения скрипта модуль не перезапускается автоматически.
Решение: Использовать модуль systemd.
Как запустить Python-скрипт на постоянку при помощи systemd
Установим на сервере данный модуль:
apt-get install systemd
На компьютере создадим файл с расширением .service. В моём случае я создаю файл для запуска скрипта Телеграмм-бота, потому называю файл icopydoc-bot.service и наполняю его следующим образом:
[Unit]
Description=Telegram bot 'iCopyDoc Bot'
After=syslog.target
After=network.target
[Service]
Type=simple
User=root
WorkingDirectory=/var/www/html/bot
ExecStart=/usr/bin/python3 /var/www/html/bot/index.py
RestartSec=10
Restart=always
[Install]
WantedBy=multi-user.target
Обратите внимание на правила WorkingDirectory и ExecStart. В первом мы указываем путь до папки, в которой лежат файлы проекта с ботом, а во втором прописываем путь до основного файла нашего проекта.
Теперь нам надо закачать данный файл в /etc/systemd/system. Я делал это через FTP (подробнее о настройке FTP на Апаче).
Но вы можете воспользоваться консолью, заменив мои данные на ваши:
pscp.exe "C:\Users\Maxim\MyBot\iCopyDocBot\icopydoc-bot.service" root@123.123.12.12:/etc/systemd/system
Далее выполняем следующие команды в консоли:
systemctl daemon-reload
systemctl enable icopydoc-bot
systemctl start icopydoc-bot
systemctl status icopydoc-bot
Готово! Теперь скрипт будет работать в фоновом режиме даже если вы отключитесь от сервера.