Тема: Демононізація скрипта
потрібно створити демон скрипта . щоб він автоматично запускався з ос і без виводу роботи в термінал(просто працював як фоновий процес)
знайшов код. Тільки куди пихати власний код я не знаю . = (
Ви не увійшли. Будь ласка, увійдіть або зареєструйтесь.
Ласкаво просимо вас на україномовний форум з програмування, веб-дизайну, SEO та всього пов'язаного з інтернетом та комп'ютерами.
Будемо вдячні, якщо ви поділитись посиланням на Replace.org.ua на інших ресурсах.
Для того щоб створювати теми та надсилати повідомлення вам потрібно Зареєструватись.
Український форум програмістів → Python → Демононізація скрипта
Сторінки 1
Для відправлення відповіді ви повинні увійти або зареєструватися
потрібно створити демон скрипта . щоб він автоматично запускався з ос і без виводу роботи в термінал(просто працював як фоновий процес)
знайшов код. Тільки куди пихати власний код я не знаю . = (
Оцей код і є тілом демона. Зручніше, правда, винести його в окрему функцію.
si = open('/dev/null', 'r')
so = open(out_log, 'a+', buffering)
se = open(err_log, 'a+', buffering)
os.dup2(si.fileno(), sys.stdin.fileno())
os.dup2(so.fileno(), sys.stdout.fileno())
os.dup2(se.fileno(), sys.stderr.fileno())
# Set custom file descriptors so that they get proper buffering.
sys.stdout, sys.stderr = so, se
https://pypi.python.org/pypi/python-daemon
https://pypi.python.org/pypi/daemonize
http://stackoverflow.com/questions/4736 … -in-python
Хоча особисто бы я краще просто запускав це через supervisord
https://pypi.python.org/pypi/python-daemon
https://pypi.python.org/pypi/daemonizehttp://stackoverflow.com/questions/4736 … -in-python
Хоча особисто бы я краще просто запускав це через supervisord
детальніше просупервісорд ?
Тобто мені потрібно помістити свій код сюди
#!/usr/bin/python
import signal, time, logbook
log = logbook.Logger('APP')
handler = logbook.FileHandler('app.log')
def log_info(msg):
with handler.applicationbound():
log.info(msg)
def log_warn(msg):
with handler.applicationbound():
log.warn(msg)
def sigterm_handler(signum, frame):
log_warn('Someone killed me.')
exit(0)
if __name__ == "__main__":
signal.signal(signal.SIGTERM, sigterm_handler)
while True:
СЮДИ ВПИСАТИ ВЛАСНИЙ РОБОЧИЙ КОД
time.sleep(1)
Ап
Можна було б просто спробувати. Це було б набагато швидше.
Blast написав:Ап
Можна було б просто спробувати. Це було б набагато швидше.
Я не знаю як його зупинити . Вбити процес не можу бо не пожу знайти по ід
Пишеш скрипт, як просто скрипт наприклад program.py, потім
pip install supervisor
echo_supervisord_conf > supervisord.conf
В отриманий конфігураційний файл дописуємо:
[program:program]
command=python program.py
stdout_logfile=./program.log
Після чого:
supervisord -c supervisord.conf # запускаємо супервізор з нашим конфігом
supervisorctl status program # показує статус нашої програми
supervisorctl status # статус всіх програм гіпервізора
supervisorctl stop program # зупинити програму
supervisorctl start program # запустити програму
Замість program можна якесь краще ім’я підібрати.
Пишеш скрипт, як просто скрипт наприклад program.py, потім
pip install supervisor echo_supervisord_conf > supervisord.conf
В отриманий конфігураційний файл дописуємо:
[program:program] command=python program.py stdout_logfile=./program.log
Після чого:
supervisord -c supervisord.conf # запускаємо супервізор з нашим конфігом supervisorctl status program # показує статус нашої програми supervisorctl status # статус всіх програм гіпервізора supervisorctl stop program # зупинити програму supervisorctl start program # запустити програму
Замість program можна якесь краще ім’я підібрати.
Ось тепер зрозуміло. Вельми вдячний.
Сторінки 1
Для відправлення відповіді ви повинні увійти або зареєструватися