Как запустить скрипт python в linux

Как запустить скрипт python в linux

Я написал скрипт Python, который проверяет определенный адрес электронной почты и передает новые электронные письма во внешнюю программу. Как я могу заставить этот скрипт работать 24/7, например, превратить его в демон или службу в Linux. Мне также нужен цикл, который никогда не заканчивается в программе, или это можно сделать, просто выполнив код повторно несколько раз?

15 ответов:

У вас есть два варианта здесь.

сделать правильный cron job что вызывает ваш скрипт. Cron-это общее имя для демона GNU/Linux, который периодически запускает скрипты в соответствии с заданным расписанием. Вы добавляете свой скрипт в crontab или помещаете символическую ссылку на него в специальный каталог, и демон обрабатывает задание запуска его в фоновом режиме. Вы можете подробнее в Википедии. Существует множество различных cron демонов, но ваша система GNU / Linux должна быть уже установлена.

использовать какой-то python подход (библиотека, например) для вашего сценария, чтобы иметь возможность демонизировать себя. Да, для этого потребуется простой цикл событий (где ваши события запускаются по таймеру, возможно, при условии функции сна).

Я бы не рекомендовал вам выбирать 2., потому что вы на самом деле повторяете функциональность cron. Парадигма системы Linux заключается в том, чтобы пусть несколько простых инструментов взаимодействуют и решают ваши проблемы. Если нет дополнительных причин, по которым вы должны создать демон (в дополнение к периодическому запуску), выберите другой подход.

кроме того, если вы используете daemonize с циклом и происходит сбой, никто не будет проверять почту после этого (как указано Невоструев Иван в комментарии этой ответ). Хотя, если скрипт добавлен как задание cron, он просто снова запустится.

Привет. Читаю книгу A Byte of Python. Там на 32й странице http://wombat.org.ua/AByteOfPython/AByteofPythonRussian-2.01.pdf создается своя команда helloworld и с помощью нее можно вызывать файл helloworld.py из любого места. К примеру просто py/helloworld.py у меня получается запускать, а вот как сделать свою команду не пойму. Знаю есть alies, но в книге как-то иначе делается. Кто подскажет как повторить пример? И чем отличается от alies?

Читайте также:  2300 Вечеров и утр

3 ответа 3

Как запускать файл Python из любого места в Ubuntu?

Также как и любую другую программу:

файл должен быть в одной из директорий, указанной в $PATH

файл должен быть исполняемым

файл должен содержать корректную shebang строку на самом верху, например:

/bin директория находится в $PATH , то можно symlink создать:

После этого можно запускать helloworld из любой директории:

В качестве альтернативы, чтобы автоматически создать исполняемый файл в пути из helloworld.py можно использовать setup.py файл:

Код для запуска следует в main() функцию поместить.

Чтобы инсталлировать скрипт (из директории с setup.py ):

Если вы не используете virtualenv, тогда можно добавить —user опцию, чтобы локально для текущего пользователя поставить:

/.local/bin в путь ( $PATH переменная окружения) в этом случае.

После этого можно запускать helloworld из любой директории:

А в чем отличие этого подхода от alies?

У вас есть скрипт, с помощью которого вы получаете данные каждый день. Например из API яндекс директ или google analytics. Вы хотите автоматизировать это действие, вам надоело вручную каждый день запускать скрипт. Для этого в linux есть планировщик задач cron.

Cron — это сервис, как и большинство других сервисов Linux, он запускается при старте системы и работает в фоновом режиме. Его основная задача выполнять нужные процессы в нужное время. Регулярные действия описываются инструкциями, помещенными в файлы crontab и в специальные директории.

Для того, чтобы отредактировать файл crontab нужно ввести в консоль команду

Ссылка на основную публикацию
Adblock detector