Crontab python subprocess und service restart

Ich habe einen kleinen Python-Code, der Nginx neu startet, ist nicht vorhanden. Wenn ich sudo python monitor_server.py alles in Ordnung. Als ich versuchte, es mit Wurzel cron ( sudo crontab -e ) mit der Linie zu cron:
* * * * * python /root/monitor_server.py > /var/log/my_monitor/cron_log.log 2>&1 Ich bekomme:

 Traceback (most recent call last): File "/root/monitor_server.py", line 19, in <module> restart_service('mongod') File "/root/monitor_server.py", line 10, in restart_service subprocess.call(command, shell=False) File "/usr/lib64/python2.6/subprocess.py", line 478, in call p = Popen(*popenargs, **kwargs) File "/usr/lib64/python2.6/subprocess.py", line 642, in __init__ errread, errwrite) File "/usr/lib64/python2.6/subprocess.py", line 1234, in _execute_child raise child_exception OSError: [Errno 2] No such file or directory 

Der Code:

 def restart_service(name): command = ['service', name, 'restart']; #shell=FALSE for sudo to work. subprocess.call(command, shell=False) if __name__ == '__main__': try: f = urllib2.urlopen("<healthcheck URL>") except (urllib2.HTTPError, urllib2.URLError) as e: logging.log(logging.ERROR, 'restarting server') restart_service('nginx') 

One Solution collect form web for “Crontab python subprocess und service restart”

Versuchen Sie, den Befehl mit dem absoluten Pfad anzurufen, da Sie ihn ohne Shell und unter einem anderen Benutzerkonto aufrufen, sind einige Befehle nicht verfügbar, ohne den absoluten Pfad anzugeben.

Erster Fund, wo befindet sich der Befehl:

 $ which service /usr/sbin/service 

Ändern Sie dann Ihren Code zu:

 def restart_service(name): command = ['/usr/sbin/service', name, 'restart']; #shell=FALSE for sudo to work. subprocess.call(command, shell=False) 
  • Python Pexpect Spawn Objekt Flush
  • Socket.gaierror: [Errno -2] Name oder Dienst nicht bekannt
  • Nginx kolben gunicorn python ... wo soll man anfangen
  • Tornado Python als Dämon
  • Warum Objekt wird mit apt.Cache anstatt apt.cache.Cache () erstellt
  • Unit Testing File Modifikationen
  • Wie kann ich einen Python Pyro Client mit PHP und Apache Webserver richtig anrufen?
  • Python-Teilprozess gibt nur ein Argument aus
  • Erstellen und pipieren Sie ein Datei-ähnliches Objekt als Eingabe für einen Befehl
  • Eingelegte Datei wird nicht auf Mac / Linux geladen
  • Hören auf globale Tastenkombinationen in python auf Linux
  • Python ist die beste Programmiersprache der Welt.