Как запустить python скрипт в фоновом режиме?
Я тут работаю над одним проектом(личный бот по факту) и возникла задача запустить его в фоне. То есть процесс будет висеть , но консоль(командная строка) будет закрыта(не свернута). Запуск скрипта с добавлением в конец & — не дает нужного результата. Думаю что нужно добавить пару строчек кода в сам скрипт.
Подскажите кто знает
- Вопрос задан более трёх лет назад
- 33429 просмотров
Комментировать
Решения вопроса 0
Ответы на вопрос 4
Можно написать демон для systemd если в вашей операционной системе он используется.
Создаём файл демона:
sudo touch /etc/systemd/system/bot.service
Вставляем туда следующее:
[Unit] Description=My bot After=multi-user.target [Service] Type=idle ExecStart=/usr/bin/python /путь/до/скрипта/bot.py Restart=always [Install] WantedBy=multi-user.target
После этого в консоли выполяем:
sudo systemctl daemon-reload sudo systemctl enable bot.service sudo systemctl start bot.service
Чтобы остановить бот:
sudo systemctl stop bot.service
Чтобы удалить из автозагрузки:
sudo systemctl disable bot.service
Чтобы проверить работу демона:
sudo systemctl status bot.service
Ответ написан более трёх лет назад
Нравится 11 7 комментариев
yahabrovec @yahabrovec Автор вопроса
Я сижу на винде
yahabrovec, тю. С этого и нужно было начинать 🙂
Как это делается в винде я не знаю.
Планировщик заданий в винде сделать да и все.

Автору ответа большое спасибо, ответ помог настроить скрипт.
Я же добавлю свою настройку для запуска скрипта из окружения
Суть: у меня проект юзает pipenv и надо было его запускать из окружения. В целом не суть важно через что у вас создается окружение, настроить запуск скрипта из окружения возможно следующими шагами.
1) залейте проект на сервак (/home/myuser/tel-bot)
2) ставьте окружение, узнайте полный путь к питоноу вашего окружения (/home/myuser/.local/share/virtualenvs/tel-bot-31zbdxgR/bin/python)
3) запускаем скрипт из окружения: ExecStart=/bin/bash -c ‘cd /home/myuser/tel-bot && /home/myuser/.local/share/virtualenvs/tel-bot-31zbdxgR/bin/python run.py’
Вот полный конфиг systemd:
[Unit] Description=super puper bot After=multi-user.target [Service] Type=idle ExecStart=/bin/bash -c 'cd /home/myuser/tel-bot && /home/myuser/.local/share/virtualenvs/tel-bot-31zbdxgR/bin/python run.py' Restart=always [Install] WantedBy=multi-user.target
Дмитрий, а если сперва надо перейти в каталог питон проекта а после запустить main.py как будет выглядеть команда?
ExecStart=/bin/bash -c ‘cd /home/myuser/scrypt && /usr/bin/python3 main.py’

alexbosco, да, вы написали верно, если у вас полный путь такой: /home/myuser/scrypt/main.py
IvanPetrovH @IvanPetrovH
Дмитрий, добавлю следующее. Когда я прописывал:
ExecStart=/bin/bash -c 'cd /home/myuser/tel-bot && /home/myuser/.local/share/virtualenvs/tel-bot-31zbdxgR/bin/python run.py'
то при остановке или перезагрузки службы, у меня скрипт не отрабатывал до конца (как это было при завершении обычной работы скрипта [ctrl + C])
Первую команду из ExecStart можно убрать. Просто в той же секции [Service] пишем:
WorkingDirectory=/home/myuser/tel-bot
В итоге скрипт норм завершается, получаем:
WorkingDirectory=/home/myuser/tel-bot ExecStart=/bin/bash -c '/home/myuser/.local/share/virtualenvs/tel-bot-31zbdxgR/bin/python run.py'
Python скрипт в постоянной работе

Стал заниматься питоном.
Пока что нуб в этих делах.
Поэтому не ругайтесь сильно.
Подскажите:
Имею небольшой скрипт на питоне. Он просматривает страницы в интернете.
На компьютере запускаю, все работает отлично. И все просматривает.
Как мне сделать так, чтобы это скрипт работал в постоянном режиме, но без моего компьютера?
А то электричество в наше время не дешевое
Т.е. может где-нибудь на сервере? Подскажите такой сервис, где можно запустить скрипт и чтобы он там постоянно работал. И да, если есть такое, то как мне его там запустить?
Буду благодарен всю жизнь!
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

Как запустить скрипт (python), для постоянной работы на VPS сервере?
Есть скрипт на языке python. Есть vps сервер на digital ocean (чистая ubuntu, без установленных.

Как заставить этот скрипт работать на постоянной основе?
Ниже приведенный код, если его использовать в консоли google chrome, позволяет сделать кнопку.
Вызов python из C#, без постоянной подгрузки модулей
Добрый день! Недавно появилась очень любопытная идея, для интеграции python в c# использовать не.
Как определить тип постоянной памяти Python
Как узнать какой тип диска (SSD или HDD) используется на диске С:?
561 / 484 / 168
Регистрация: 14.02.2012
Сообщений: 1,561
Есть такой сервис Google App Engine.
Приложения, разворачиваемые на базе App Engine, должны быть написаны на Python, PHP, Java либо Go. Среда исполнения Python включает в себя полную реализацию возможностей самого Python, большинство функций стандартной библиотеки языка, ограниченную версию Django, и т. д.
Регистрация: 30.10.2013
Сообщений: 16
ВАСИЛЕВС, спасибо большое!
Буду разбираться
Добавлено через 46 минут
Правда, никак не могу понять, как на самом App Engine развернуть свой проект
Добавлено через 5 минут
Пробую нажать Deploy
Ввожу имя пользователя и пароль, он вроде все туда закидывает.
Но, когда захожу на свой сайт, то пишет:
Error: Server Error
The server encountered an error and could not complete your request.
If the problem persists, please report your problem and mention this error message and the query that caused it.
Добавлено через 5 минут
А есть какие-нибудь аналогичные серверы для запуска?
2740 / 2339 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
Можно заплатить за любой хостинг или взять бесплатный, установить туда python и все!
Регистрация: 30.10.2013
Сообщений: 16
tsar925, не подскажите пожалуйста хороший и бесплатный хостинг, чтобы там можно было запустить питон скрипт, и чтобы он там работал, даже когда я оттуда выйду.
2740 / 2339 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
Что уж не знаю, то не знаю.
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь
Требуются для удаленной работы на постоянной основе Django/Python разработчики
В связи с расширением в команду требуются джангисты. Требования к кандидату: 1. Опыт работы с.
Как из Python скрипта выполнить другой python скрипт?
Как из Python скрипта выполнить другой python скрипт? Если он находится в той же папке но нужно.

Как запустить python скрипт без python
Как запустить python скрипт или какойто Gui(на pyqt5) в связке с какими то пайтоновскими скриптами.
Немного о работе Python
Запускал в терминале(командной строке) все как обычно(первый скриншот). А вот потом запустил.
Трудности в работе с Python
Всем привет! Какие сложности у вас возникали в коммерческой разработке? Например, один неверный.
Странный скрипт мешающий работе браузера
Я не профи, но кое что понимаю, у меня стал плохо работать браузер, пробовал и переустановить его.
Скрипт работает дома, на работе — нет
Я в этом деле совсем новенькая, поэтому прошу помощи. Есть у меня htm-файл с JS внутри. Запускаю.
Или воспользуйтесь поиском по форуму:
Как запустить скрипт на Python
Начинающий разработчик на Python, помимо синтаксиса и основных правил использования операторов этого языка, должен уметь запускать код на исполнение. Ведь только так можно понять, работает ли написанный вами скрипт, или в нем содержатся ошибки. Рассмотрим подробнее, как можно запустить скрипты в терминале операционной системы, в интегрированной среде разработки или просто из интерфейса ОС. Это позволит вам выбрать подходящий вариант и повысить эффективность своей работы.
Интерпретатор Python
Рассматриваемый язык программирования является одним из самых прогрессивных на текущий момент. Он позволяет быстро и эффективно решать задачи в самых разных областях. Однако под термином Python понимают также интерпретатор, то есть программу на компьютере, которая позволяет запускать на исполнение написанные скрипты. Она представляет собой дополнительный программный слой между аппаратным обеспечением ПК и кодом.
Существует несколько интерпретаторов:
- написанные на языке программирования С;
- написанные на языке программирования Java;
- написанные на языке Python;
- программы, реализованные в среде .NET.

Выбор конкретного варианта для конечного пользователя значения не имеет. Независимо от вида программы, написанный код будет выполняться именно так, как предусмотрено правилами этого языка.
Запуск возможен двумя способами: как готовая к использованию программная последовательность (скрипт или модуль) или как отдельные куски кода, которые вводятся прямо в окно программы.
Интерактивный запуск кода
Для тестирования отдельных команд можно использовать интерпретатор в режиме интерактивного сеанса. Для этого необходимо открыть командную строку операционной системы и ввести команду, которая запускает интерпретатор.
Для ОС Linux это будет выглядеть следующим образом:
$ python3 Python 3.6.7 (default, Oct 22 2018, 11:32:17) [GCC 8.2.0] on linux Type "help", "copyright", "credits" or "license" for more information. >>>
Теперь можно вводить команды, которые будут выполняться сразу после этого. Минус подобного подхода в том, что вся введенная последовательность не сохраняется после закрытия текущей сессии.
Интерактивное исполнение кода необходимо для того, чтобы немедленно протестировать фрагмент написанного кода. Кроме того, его можно использовать в процессе обучения для проверки действий тех или иных операторов «на лету». Этот способ интерпретации команд позволяет попробовать нужные вам функции языка, не прибегая к написанию отдельных скриптов для этого.
Выйти из интерактивного режима можно с помощью команды quit(), или просто закрыв окно терминала в Windows.
Для открытия терминала или командной строки перед запуском самого интерпретатора необходимо:
- В Windows нажать комбинацию клавиш «Флажок» + «R», после чего ввести команду cmd и нажать на кнопку «ОК» в диалоговом окне.
- В Linux или других подобных операционных системах доступ к командной строке предоставляется с помощью дополнительной программы. Можно использовать xterm или Konsole.
- В macOS для получения доступа к терминалу необходимо выбрать меню «Приложения», после чего перейти в раздел «Утилиты» и кликнуть на элементе «Терминал».
Как работает интерпретатор Python для скриптов
Запуск на исполнение написанных скриптов или модулей производится в пакетном режиме. И выполняется по сложной схеме, которая состоит из следующих этапов:
- Последовательная обработка всех операторов, которые записаны в скрипте.
- Компиляция исходного хода в промежуточный формат. Интерпретатор создает байт-код, который представляет собой язык программирования низкого уровня, независимый от платформы и операционной системы. Байт-код необходим для оптимизации процесса выполнения скрипта.
- Исполнение полученного кода. На этом этапе вступает в действие виртуальная машина Python (PVM), которая циклично перебирает каждый оператор из скрипта и запускает его на исполнение. Как будто вы вводите каждую команду последовательно в интерактивном интерпретаторе.
Запуск скриптов в командной строке
В интерактивном режиме, который обсуждался выше, можно записывать и выполнять любое количество строк кода. Но после закрытия окна терминала они не сохраняются. Поэтому реальные программы на Python пишутся в виде скриптов и представляют собой обычные текстовые файлы. Чтобы избежать путаницы при их хранении, им присваиваются расширения .py или .piw.
Создавать текстовый файл можно с помощью любого редактора, в том числе Notepad. Однако лучше использовать более продвинутые решения, например Sublime Text. Для примера возьмем наиболее простой скрипт, с которого начинается знакомство с любым языком программирования.
#!/usr/bin/env python3 print('Hello World!')
Файл можно сохранить в вашем рабочем каталоге с любым именем и расширением .py.
Чтобы запустить скрипт на исполнение, нужно использовать интерпретатор языка программирования и в качестве дополнительного параметра указать имя созданного вами файла.
$ python3 hello.py Hello World!
В приведенном выше примере файл был назван «hello.py». После ввода команды нужно нажать клавишу «Ввод», и на экране появится результат работы скрипта. То есть надпись «Привет, Мир» или классическое английское «Hello World»!
Если файл с программой сохранен не в каталоге с интерпретатором, нужно указывать путь к нему.
Переназначение устройства вывода информации
При исполнении программного кода на Python иногда необходимо сохранять результаты, которые отображает на экране программа. Они в дальнейшем анализируются для поиска ошибок или других целей. В этом случае скрипт необходимо запускать следующей командой:
$ python3 hello.py > output.txt
По результатам работы скрипта создается файл с именем output.txt, в который сохраняется все то, что должно было появиться на экране во время работы в программе. Это стандартный синтаксис, предусмотренный операционной системой.
Если файла с заданным именем не существует, ОС создает его автоматически. Если существует – данные в нем перезаписываются без сохранения предыдущих. В случае, когда есть необходимость в добавлении данных в конец текстового файла, вместо одного значка > необходимо указать два >>.
Прокачать навык программирования на Python и найти работу Junior Python разработчика помогут наши менторы Выбрать ментора
Запуск из командной строки без интерпретатора
В последних версиях операционной системы Windows добавлена возможность запускать скрипты на Python без ввода в командной строке названия программы-интерпретатора. То есть необходимо просто написать название файла с расширением.
C:\devspace> hello.py Hello World!
Обусловлено это тем, что при клике на файле или запуске его из командной строки операционная система автоматически ищет связанное приложение и запускает его. Точно так же вы открываете файлы Word, просто кликнув на них курсором мыши.
В Unix таким образом тоже можно запускать скрипты. Однако для этого в первую строку текстового файла с командами необходимо добавить текст #!/Usr/bin/env python. Он указывает на программу, с помощью которой производится запуск. А интерпретатор языка программирования расценивает строку как комментарий и пропускает её.
Запуск скриптов из интерактивного режима
Находясь в интерактивном режиме (описан в первом разделе), пользователь может загрузить файл с написанной ранее последовательностью команд и запустить его на исполнение. Такой способ можно применять, когда модуль содержит вызовы функций, методов или других операторов, генерирующих текст на экране. В противном случае видимых результатов работы программы не будет.
Запустить скрипт из интерактивного режима можно командой:
>>> import hello Hello World!
Обратите внимание, что эта команда срабатывает один раз за интерактивный сеанс. Поэтому, если внести изменения в файл со скриптом и перезапустить его этой командой, ничего не произойдет.
Заключение
Теперь вы знаете, что команды и скрипты Python можно запускать разными способами и в разных режимах. Это позволит вам выбрать нужный вариант для решения конкретной задачи, увеличить скорость своей работы, сделать ее продуктивной и гибкой.
© Copyright 2014 — 2024 mkdev | Privacy Policy
Постоянная работа приложения Python
Добрый день. Я сам недавно занимаюсь программированием и нахожусь только на начальной стадии. И ко мне время от времени приходят вопросы ответы на которые хотелось бы узнать, но кроме как к вам, мне некуда обратиться. Подскажите пожалуйста, как заставить приложение работать постоянно? Предыстория: у меня есть приложение которое следит за обновлениями в группе в контакте, как только появляется новая запись — она загружается в БД. Я запускаю приложение, оно пробегается по последним 10 записям и загружает те которых нет в базе и так каждый раз. Как мне сделать, что бы приложение работало постоянно и при добавлении записи в группе сразу подтягивалось в БД.
Отслеживать
Владимир В.
задан 17 янв 2017 в 8:12
Владимир В. Владимир В.
461 1 1 золотой знак 8 8 серебряных знаков 23 23 бронзовых знака
в сторону: вопросы на Stack Overflow обязаны допускать возможность краткого (несколько параграфов) ответа, то есть если хороший ответ на ваш вопрос требует гораздо большего объёма, то вопрос следует сузить или вам нужен другой ресурс. Ответы, состоящие только из ссылки на внешний ресурс (книгу, статьи) не слишком полезны: многие ссылки перестают работать спустя какое-то время и лучше если веб-поисковик в таких случаях напрямую будет людей, а не через Stack Overflow (то есть вопросы, на которые можно только ссылкой ответить, лучше удалить, чтобы гугл не смущать).
17 янв 2017 в 8:25
связанныевопросы Как избежать вылета программы, Как выполнять код каждый день в заданное время