PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : (BASH) - Script per nohup im Background laufen lassen?



Nightmare
14.04.2015, 18:12
Ich möchte gern ein PHP Script im Background laufen lassen, über SSH.
Nun weiß ich leider nicht mehr den genauen Befehl.
Entweder

nohup php -f PATH.php
oder

n php -f PATH.php&

syrius
14.04.2015, 18:32
Hi,

empfehle dir eine andere Strategie zu wählen. Was ist wenn der Prozess mal beendet wird? Von allein startet sich das nicht mehr. Daher folgendes dazu:

Erstelle einen Cronjob mit


crontab -u www-data -e

und füge folgende Zeile ein


*/2 * * * * www-data if [ -z "`ps aux | grep -i "FILE.php" | grep -v "grep"`" ]; then php -f /PATH/TO/FILE.php ; fi



Ändere "FILE.php" an beiden stellen in den exakten Dateinamen ab
Ändere /PATH/TO/ in den korrekten Pfad ab
Nutze statt www-data den Benutzernamen unter dem der Cronjob ausgeführt werden soll beginnend bei "crontab -u www-data -e"



Es wird nun 2 Minuten nach dem Systemneustart der Prozess gestartet und alle 2 Minuten geprüft ob er noch läuft, wenn nicht, wird er gestartet.

Mit "nohub" habe ich nie gearbeitet daher kann ich dir da nicht helfen ... aber ja, "nohub" ist eine Möglichkeit Prozesse in den Background zu moven aber auch


php -f FILE.PHP &

Grüße

Cappa
14.04.2015, 19:39
Das geht per


php -f PATH.php &

LucidTrip
22.04.2015, 21:23
nohup ? Wiki ? ubuntuusers.de (http://wiki.ubuntuusers.de/nohup)

Ich starte nohup immer so:

nohup php PATH.php > /dev/null &

Meines Wissens wird so das Programm im Hintergrund (nohup) gestartet so das auch wenn der User sich aus dem Terminal auslogt weiterläuft. Hinter dem Befehl noch `> /dev/null &` um die Konsolenausgabe ins Nirvana zu schicken. Das kombiniere ich noch mit der Variante von Syrius. So läuft jeder Bot, FTPd, socksd oder was auch immer, für immer.

Man kann in übrigen einen crontab auch einfacher erstellen. Aber hier muss man aufpassen da so der eingeloggte user für den Cronjob genutzt wird.


crontab -l > cronjob
echo "*/5 * * * * \"/php /PATH/SKRIPT.PHP\"" >> cronjob
crontab cronjob


Die kleine `if` Abfrage von Syrius find ich klasse, werd ich in Zukunft auch noch mit einbauen.