Schöne Befehle in einem .sh-Skript für Cron-Jobs

6983
xlordvader

Ich habe dieses PHP-Skript, das ich auf Shared Webhosting ausführen muss. Ich habe einen Cron-Job erstellt, der ein SH-Skript ausführt. Der Befehl für den Cron war:

/bin/sh /home/user/script.sh

Ich gehe also davon aus, dass es sich um eine Bourne-Shell (oder etwas kompatibles) handelt. Das Skript selbst war:

#!/bin/sh cd /home/user/public_html/folder/ #updating DB php -q ./run_interactive_job.php batch_control_files/updateDB echo Updated DB results 

Meine Frage ist :
Kann ich dem PHP-Befehl Nizza- Prioritäten hinzufügen ? Oder muss ich es beim cron-Befehl zum Skript hinzufügen? Welches funktioniert eher?

nice 10 php -q ./run_interactive_job.php batch_control_files/updateDB

Wäre das erfolgreich mit einer niedrigeren Priorität ausgeführt.

PS: Im Grunde hat dieses Skript den Server überlastet, als ich es über den Browser ausgeführt habe. Dies hatte Auswirkungen auf Apache auf diesem Server, was dazu führte, dass meine Hosts die Datei blockieren. Ich habe sie wiederholt gebeten, die Blockierung mit verschiedenen Parametern zu testen. Und jetzt versuche ich es mit einer niedrigeren Priorität durch cron zu laufen, in der Hoffnung, dass es Apache nicht beeinflusst. Ich möchte jedoch nicht, dass Probleme erneut erstellt werden. Daher versuche ich, NICE zu verwenden

UPDATE : Ich habe die Batch-Datei wie dort gezeigt verwendet. Ich habe den nice-Befehl vor PHP in der Batch-Datei verwendet. Der einzige Unterschied ist:

nice -n 10 php -q ./run_interactive_job.php batch_control_files/updateDB

Ich fügte Befehle hinzu, um zusätzliche PHP-Skripts mit der gleichen schönen Eigenschaft auszuführen. Sie haben alle großartig funktioniert.

DANKE ALLES FÜR DIE EINGABE @ sm4rk0 Antwort löst meine Probleme

4

1 Antwort auf die Frage

4
sm4rk0

Beide Methoden sollten funktionieren, aber IMO ist sauberer, niceso wie Sie es in Ihrem Beispiel getan haben. Nach einem Check mit man nicefand ich, dass das fragliche Beispiel eine falsche Syntax hatte. Die richtige Syntax wäre:

nice -n 10 command 

Die Feinheiten reichen von -20 (günstigste Zeitplanung) bis 19 (ungünstigste).

Und wie gesagt, 10 ist der Standardwert, so dass "-n 10" weggelassen werden kann.

Hinweis: Obwohl die Prozesspriorität verringert wird, führt nice nicht zu einer geringeren CPU-Belastung. Also, wenn der einzige Grund, sich Sorgen zu machen, nicht das "Drosseln" ist apache, ist diese Methode in Ordnung. Aber wenn Ihre Hosts Ihnen ein gewisses CPU-Zeitkontingent geben, wird dies nicht viel helfen.

Das technische Supportteam blockierte es wiederholt, nachdem das Skript etwa 10 Minuten lang ausgeführt und den Server verlangsamt hatte. Sie scheinen keine CPU-Quote zu haben oder ich bin der Meinung, dass meine Website selbst nicht ressourcenintensiv ist. xlordvader vor 11 Jahren 0
Ist dieser Befehl in der Syntax korrekt? Ich habe Nizza noch nie mit einem Cron in einem Skript versucht. Und ich möchte nicht noch einmal vom Server gekickt werden. Schmerz, mit Tech zu reden xlordvader vor 11 Jahren 0
Ja. Die `nice`-Syntax ist in Ordnung. Probieren Sie es aus und kommen Sie hierher, um uns zu aktualisieren, falls es funktioniert. sm4rk0 vor 11 Jahren 0
Entschuldigung, die Syntax war nicht in Ordnung. Die korrekte Syntax wäre: `nice -n 10 command` sm4rk0 vor 11 Jahren 0
Eigentlich reicht schon "nice command" aus, der Befehl wird standardmäßig mit einer Priorität von 10 ausgeführt. terdon vor 11 Jahren 0
`nice -n 10 php -q ./run_interactive_job.php batch_control_files / updateDB` hat perfekt funktioniert. Ich habe mehrere PHP-Dateien nacheinander ohne Hickups ausgeführt. Mit dem Tech überprüft und sie sagten, der Server sei auch in Ordnung. xlordvader vor 11 Jahren 0