Wenn Sie Cronjob @reboot ausführen, wird zurückgegeben, dass die Datei auf der NFS-Freigabe nicht vorhanden ist.
Beispiel
@reboot python /abs/path/to/script.py
E-Mail von crontab beim Start lautet "mehr oder weniger"
/usr/bin/python can't open file "/abs/path/to/script.py": [Error No. 2] No such file or folder.
Das Skript kann problemlos über die Befehlszeile ausgeführt werden. Die
Theorie besagt, dass der Cronjob ausgeführt wird, bevor der Mount ausgeführt wurde.
Die Fragen.
- Ist diese Theorie richtig?
- Gibt es eine Möglichkeit, den Job zum Heulen zu zwingen, bis das Laufwerk montiert wurde? .... außer nur einen Schlaf 60 in den Befehl zu setzen. ;) Ich habe das schon versucht, aber es ist ein Hit und Miss und ich brauche das Skript, um 100% der Zeit schnell zu laufen.
Antworten:
Sie können den Befehl mountpoint verwenden, um sicherzustellen, dass die Bereitstellung stattgefunden hat, bevor Sie Ihren Befehl ausführen, z. B. (vorausgesetzt, / abs ist der Bereitstellungspunkt).
quelle
mountpoint
- das ist sehr nützlich!Ich bin mir nicht sicher, wo das Problem liegt, da cron nach dem Networking startet. (Zumindest in Red Hat und Derivaten.) Sind Ihre Reittiere
/etc/fstab
mit_netdev
Option oder wo?Die Standardmethode, um etwas beim Start auszuführen, besteht darin, es in aufzunehmen
/etc/rc.local
. Dies wird ausgeführt, nachdem das Netzwerk initialisiert und alle anderen Dienste gestartet wurden. (Einschließlich der Montage von Remote-Dateisystemen.)(Oder gibt es einen Grund, das Skript erst nach einem wörtlichen Neustart auszuführen?)
quelle
Hier sind einige Ideen für Sie:
Überprüfen Sie, ob NFS bereitgestellt ist. Wenn nicht, mounten Sie es und führen Sie Ihr Skript aus:
[ ! -f /abs/path/to/script.py ] && mount -t nfs device dir && python /abs/path/to/script.py
Führen Sie Ihr Skript in der
start()
Funktion des NFS-Init-Skripts aus:quelle
Um absolut sicher zu sein, dass das Python-Skript ausgeführt werden kann. Sie müssten es in ein Skript einschließen, das im lokalen Speicher gespeichert ist, um zu überprüfen, ob der Einhängepunkt erreicht wurde.
So etwas wie (Warnung Pseudo-Code):
quelle