Это как бы связано с моим предыдущим вопросом , но я поставил его на свой собственный вопрос, так как считаю, что это правильный вопрос сам по себе.
У меня есть вопросследующий python, который остановит службу httpd
, если служба radiusd
завершится с ошибкой.Причина этого кроется в деталях
import os
import subprocess
import time
def running(name):
with open(os.devnull, 'wb') as hide_output:
exit_code = subprocess.Popen(['service', name, 'status'], stdout=hide_output, stderr=hide_output).wait()
return exit_code == 0
while True:
if not running('radiusd'):
os.system('service httpd stop')
if running('radiusd'):
os.system('service httpd start')
time.sleep(10)
Во-первых, я запускаю это в цикле навсегда и планировал запустить его при запуске в .bashrc
или что-то в этом роде.Так что каждые 10 секунд он будет работать.С концептуальной точки зрения это нормально, но есть ли лучший способ проводить опрос каждые несколько секунд без использования задания cron?
Во-вторых, мне не нравится, как он пытается запустить службу, даже если она работает.В текущей форме он просто запускает service httpd start
каждые 10 секунд, если все в порядке.Это похоже на нагрузку на систему и немного затрат времени / энергии.Должен быть способ запустить процесс, только если он еще не запущен.