Ich habe einen Python-Daemon-Prozess, der über rc.local gestartet wird. Dasselbe Skript mit denselben Berechtigungen ist auch auf einigen anderen Ubuntu-Rechnern installiert, die ich habe. Es läuft ohne Probleme auf diesen Installationen. Das heißt, nach einem Neustart des Rechners läuft der Daemon-Prozess.
Bei dieser speziellen Installation läuft der Daemon-Prozess jedoch nicht mehr, wenn ich mich anmelde und die Existenz des Prozesses überprüfe. Die rc.local-Dateien sind auf beiden Systemen identisch (oder zumindest nahe genug dran):
localaccount@sosms:~$ cat /etc/rc.local
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
python /var/www/myDaemon/Main.py > /var/log/somelog.txt
exit 0
Die Berechtigungen sind:
localaccount@sosms:~$ ls -la /etc/rc.local
-rwxr-xr-x 1 localaccount localaccount 370 Jun 3 11:04 rc.local
Ich habe getestet, ob der Prozess rc.local ausgeführt wird, indem ich diesen Test rc.local verwendet habe:
localaccount@sosms:/var/log/sosmsd$ cat /etc/rc.local
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
echo "test" > /home/localaccount/test1
/usr/bin/python /var/www/sosms/sosmsd/Main.py > /var/log/sosmsd/log/log
echo "test" > /home/localaccount/test2
exit 0
localaccount@sosms:/var/log/sosmsd$
Und nur die erste Testdatei (test1) wird nach dem Neustart der Box erstellt. Ich vermute, dass dies bedeutet, dass die Python-Zeile ein Problem verursacht, aber ich erhalte keine Ausgabe in /var/log/sosmsd/log/log:
localaccount@sosms:~$ ls
test1
更新しています:
Ich habe dann den Rat von Larsks befolgt und festgestellt, dass der Fehler beim Starten des Python-Skripts auftrat:
mysql_exceptions.OperationalError: (2002, "Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)")
Bedeutet dies, dass rc.local ausgeführt wird, bevor MySQL die Möglichkeit hatte, initialisiert zu werden? Was soll ich jetzt tun?