Запустить python скрипт на сервере
которая запускала скрипт и можно было закрывать терминал, уходить с сервера, а скрипт продолжал работать. Может кто напомнить?
Отслеживать
задан 8 июл 2014 в 12:26
435 2 2 золотых знака 6 6 серебряных знаков 16 16 бронзовых знаков
Может быть что-то типа: nohup python script.py > /var/log/myscript.log 2>&1 & nohup . — отвязывает ввод/вывод . > . — перенаправляет вывод в файл . 2>&1 — поток ошибок перенаправляет в поток вывода . & — запуск в фоне
8 июл 2014 в 12:29
@BOPOH, да, это оно. спасибо.
8 июл 2014 в 12:53
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
python script.py &
запустит скрипт в фоновом режиме. Чтобы «вернуть» его, нужна команда
fg %1
Но для сервера лучше использовать screen, чтобы была возможность подключиться к процессу при необходимости.
P.S. Если скрипт уже работает, то можно остановить его (не завершить, а «поставить на паузу» командой ctrl+z) и продолжить выполнение в фоне командой
bg %1
Как запустить Python скрипт на хостинге/виртуальном сервере?
Написал небольшой скрипт, который парсит обьявления на ОЛХ по параметрам. Если появляется новое обьявление скрипт отправляет мне его данные в телеграмм. В пайтоне не силен, работаю на другом ЯП, сделал уведомлялку чтоб снять жилье. Суть вопроса в том, что скрипт работает только локально и это не совсем удобно, ведь ноутбук у меня не включен 24/7. Есть бесплатный хостинг beget, возможно ли на нем или на другом хостинге запустить скрипт чтоб он работал постоянно? Без cron и прочих планировщиков задач, в скрипте стоит while: True . sleep(120). то есть скрипт каждые две минуты проверяет не появилось ли новое обьявление.
- Вопрос задан более двух лет назад
- 10575 просмотров
Запускаем Python-скрипт на сервере, чтобы он работал всё время
В итоге мы остановились на том, что научились запускать скрипт на сервере, чтобы он работал после разрыва соединения. Но это половинчатое решение: если мы перезапустим сервер, то бот остановится. Иногда сервер перезагружается сам на стороне провайдера, например при плановых технических работах. И тогда наши скрипты умирают.
Сейчас нам нужно такое решение, чтобы бот автоматически перезапускался при любых обстоятельствах. Этим и займёмся.
Коротко — суть
Чтобы было понятно, что тут происходит, вот короткая версия:
- Настраиваем удалённый доступ к серверу.
- Создаём папку и заливаем в неё скрипт, который в итоге должен будет работать всё время.
- Создаём у себя на компьютере файл службы — он управляет настройками автозапуска скрипта.
- Отправляем файл службы на сервер.
- Обновляем на сервере данные обо всех службах и запускаем нашу.
Теперь подробно про каждый шаг.
Предварительная работа
Основное, что мы будем использовать, — это удалённый доступ к серверу по SSH. Для этого он должен быть включён на самом сервере, и там же можно сразу посмотреть параметры доступа. Например, для работы нашего учебного сервера мы пользуемся услугами SpaceWeb, где доступ по SSH включается из панели управления:
Запускаем SSH и проверяем, что соединение устанавливается. Чтобы соединиться, нужно написать в терминале команду ssh имя_пользователя@адрес_сервера, после чего нажать Enter. Сервер спросит пароль, и, если мы его правильно ввели, нас пустят.

Мы видим приветствие сервера, значит, всё прошло хорошо и мы можем управлять им со своего компьютера. Для этого нужно будет писать в терминал команды и реагировать на то, что тебе ответит сервер.
Отправляем скрипт на сервер
Чтобы не захламлять корневую папку на сервере, создадим новую папку bot. Вот эта команда:
После этого открываем новую командную строку на компьютере, а не на сервере. Для этого нужно запустить ещё одно окно терминала. Там пишем такое:
scp /Users/mihailpolanin/Downloads/bot.py mpolyanin@77.222.61.9:bot
Вот что это означает:
- scp — копирование файла по SSH;
- /Users/mihailpolanin/Downloads/bot.py — это путь к нашему скрипту на компьютере. Его замените на то, что будет у вас;
- mpolyanin@77.222.61.9 — адрес сервера и логин пользователя. Это тоже замените на ваши данные;
- : — отделяет сервер от папки;
- bot — название папки, которую мы только что создали на сервере.
Лайфхак: чтобы не писать вручную пути до файлов на локальном компьютере, можно перед началом ввода пути просто перетащить файл в окно терминала. Терминал поймёт, что вы имели в виду «путь до этого файла», и подставит данные сам.
После запуска у нас попросят пароль от сервера — вводим его и видим статистику отправки файла:

Переключаемся обратно в SSH-соединение и проверяем, что файл скопировался и лежит в папке. Для этого вводим две команды: первая перейдёт в эту папку, а вторая покажет её содержимое:

Готовим файл для работы службы
Нам нужно, чтобы система сама следила за тем, чтобы скрипт работал всё время и запускался после перезагрузки. В Linux за это отвечают службы — одну из таких служб мы сейчас и сделаем.
Создаём на компьютере новый файл bot.service и вставляем туда такое:
[Unit] Description=tg-bot After=multi-user.target [Service] User=root Group=root Type=simple Restart=always ExecStart=/usr/bin/python3 /bot/bot.py [Install] WantedBy=multi-user.target
Два самых важных параметра — это путь к нашему скрипту (/bot/bot.py) и название службы: tg-bot. Название может быть любым, а вот путь к скрипту нужно указать точно.
Теперь закидываем этот файл на сервер в папку /usr/lib/systemd/system. Для этого в командной строке компьютера пишем:
scp /Users/mihailpolanin/Downloads/bot.service mpolyanin@77.222.61.9:/usr/lib/systemd/system
Как и раньше, не забудьте заменить адрес до файла .service на вашем компьютере, а также имя пользователя и адрес сервера. Первый адрес можно не писать вручную, а перетащить файл в терминал сразу после набора команды scp.
Запуск службы
Теперь нам нужно перезагрузить все службы, чтобы наш файл тоже попал в общий список для запуска. Открываем SSH-консоль и выполняем там такую команду:
sudo systemctl daemon-reload
И сразу включим наш сервис, чтобы он не отключался при перезагрузке сервера:
sudo systemctl enable bot.service
Всё, можно запускать наш телеграм-бот как службу. Вот основные команды для этого:
- sudo systemctl start bot.service — запустить службу;
- sudo systemctl stop bot.service — остановить службу;
- sudo systemctl status bot.service — посмотреть статус, работает или нет.
Что дальше
В следующий раз сделаем ещё круче — настроим систему мониторинга на сервере, чтобы нам на почту приходило сообщение, когда служба перезапускается или останавливается с ошибкой. Подпишитесь, чтобы не пропустить.
Любишь Python? Зарабатывай на нём!
Изучите самый модный язык программирования и станьте крутым бэкенд-разработчиком. Старт — бесплатно.

Получите ИТ-профессию
В «Яндекс Практикуме» можно стать разработчиком, тестировщиком, аналитиком и менеджером цифровых продуктов. Первая часть обучения всегда бесплатная, чтобы попробовать и найти то, что вам по душе. Дальше — программы трудоустройства.
Как установить и запустить код Python на Linux VPS?
Если у вас есть Linux Cloud SSD с Hostwinds и вы хотите использовать Python, это руководство для вас.Чтобы начать, подключитесь к вашему облачному SSD HostWinds Cloud SSD через SSH.Если вы не уверены в том, как подключиться к SSH, HostWinds предлагает вам Руководство по подключению вашего VPS с SSH.
Вы также захотите рассмотреть возможность использования пользователя Sudo в любом Centos7 или Ubuntu следить за этим руководством:
Установка Python
Точные шаги установки различаются, но самый простой способ установить Python на Linux Cloud SSD — это использовать определенную часть программного обеспечения, называемую диспетчером пакетов. Чтобы уточнить, менеджеры пакетов автоматически загружают и настраивают программное обеспечение в вашей системе за вас.
В Ubuntu или Debian, Диспетчер пакетов под названием «APTitude» использует APT на командной строке.Чтобы установить Python на Ubuntu, просто запустите эту команду как root:
sudo apt install python3
В CentOS, Red Hat и Fedora Имейте менеджер пакета под названием «RPM», лучше известный как «Менеджер пакета Red Hat Package».Кроме того, что-то называемое «yellowdog Updater,» или yum, серверы в качестве интерфейса командной строки.Чтобы установить Python, как root, используйте команду:
sudo yum install python3
После выполнения этих команд Python будет установлен в вашей системе.
Использование команд Python
После того, как Python был установлен в вашей системе, вы можете попробовать его в командной строке. Введите команду Python3, и вы можете получить доступ к интерпретатору Python. Этот интерпретатор позволит вам запустить команды в Python и увидеть результаты в режиме реального времени.
Вот мнение Python в командной строке в Centos 7, используя PUTTY SSH-клиент:

Как только у вас появится приглашение >>> с правой стороны, вы можете ввести код Python. В качестве примера приведем небольшую однострочную программу, которую вы можете быстро запустить:
print("Hello World!")
Вот как это выглядит после запуска в интерпретаторе:

Чтобы выйти из переводчика Python и обратно в вашу оболочку, введите EXIT (), чтобы вернуться в приглашение оболочки.
Запуск скриптов Python
Запуск команд от интерпретатора хороша, если вы хотите получить ощущение Python.Однако, если вы хотите запустить более полные скрипты, вы, скорее всего, захотите написать его в отдельный файл, называемый сценарием.
Сценарии Python в основном заканчиваются в расширении .py, чтобы вы могли сделать один запускать текстовый редактор под названием Nano, который создаст новый файл.
Запустите команду Nano Hello.py.Вы заметите, что это подтянут новый экран здесь, и он должен выглядеть что-то подобное:

Оказавшись там, вы можете начать вводить код Python. В приведенном ниже фрагменте кода запрашивается ваше имя, а затем передается привет:
#hello.py print("Hello, may I know your name?") greeting = input("Tell me your name here! > ") if greeting: print("Hello, " + greeting + "!") else: print("Hello!")
Вот как это выглядит в замазке:

Теперь вам нужно сохранить этот файл.В Nano вы можете сделать это, удерживая клавишу управления и набрав «X» на клавиатуре.Затем Nano предложит вам сохранить файл, введите «y» для да, а затем ввести.Теперь вы должны вернуться в главной оболочке.
Как только файл сохраняется, вы можете запустить его с помощью Python3 Hello.py на главной странице оболочки. Вот что работает программа, как следует выглядеть:
python3 hello.py

Предположим, вы сделали это далеко.Поздравляю!Вы взяли первые шаги в использовании Python!
Написано Hostwinds Team / Ноябрь 8, 2019
