
Linux Ubuntu 14.04 Haben Sie ein Skript in ~/app/serve.py
Muss es in diesem Ordner ausführen. In der Shell mache ich vielleicht
> cd ~/app && python serve.py
und es betreibt einen Server
Muss beim Booten von Servern im Hintergrund ausgeführt werden. Habe versucht, diesen Befehl in etc/rc.local (und etc/init.d/rc.local) hinzuzufügen, cd ~/app && python serve.py ~
aber er startet nicht.
Was mache ich falsch?
Antwort1
Anstatt cd ~/app && python serve.py
/etc/rc.local hinzuzufügen, versuchen Sie, den gesamten Pfad einzugeben. Sie erwarten, dass der Init-Prozess irgendwie weiß, dass ~ Ihr Home-Verzeichnis ist, aber Init startet als Root. Da Init als Root startet, sucht es /
nach dem App-Verzeichnis und nicht nach Ihrem Home-Verzeichnis. Entfernen Sie das ~, indem Sie den Pfad zu Ihrem Home-Verzeichnis verwenden.
/home/whitecolor/app/serve.py
Versuchen Sie, zu /etc/rc.local
. ( hinzuzufügen pwd
, um Ihr Pfadverzeichnis zu finden.) Entfernen Sie das python
vor Ihrem serve.py-Skript, indem Sie es #!/usr/bin/python
oben in Ihrem Skript hinzufügen. (Geben Sie a ein, which python
um den Pfad zu finden, falls es nicht am normalen Ort installiert ist.)
Bearbeiten: Sie sagten „im Hintergrund ausführen“, und das habe ich übersehen. Um einen Befehl im Hintergrund auszuführen, fügen Sie &
nach dem Befehl ein ein. Um den obigen Befehl also in den Hintergrund zu stellen: /home/whitecolor/app/serve.py &
Init benötigt das Hintergrundsymbol normalerweise nicht, um einen Job zu starten und im Hintergrund auszuführen.
Der hervorragende Vorschlag von DrDR würde &
nach dem Befehl beim Cron-Start nicht die gleiche Behandlung erfordern, da diese standardmäßig im Hintergrund ausgeführt werden.
Antwort2
Ich hatte noch nie das Bedürfnis, dies auszuprobieren, aber anscheinend können Skripte beim Systemstart über Cron ausgeführt werden, indem eine Zeile hinzugefügt wird, die der unten mit @reboot beginnenden Zeile ähnelt.
#m h dom mon dow command
1 * * * * someHourlyCommand
@reboot python /home/<username>/app/serve.py
Beachten Sie, dass ich den Befehl leicht geändert habe, um das Wechseln in das Verzeichnis per CD zu vermeiden. Ihre Situation kann anders sein, also tun Sie, was für Sie funktioniert.