Wir haben ein Skript, das auf unseren Webservern ausgeführt wird, ausgelöst durch Kundenaktionen, die einen Unix-Prozess initiieren, um einige Cache-Dateien zu generieren. Da dieser Prozess auf von unseren Kunden gelieferte Dateien wirkt, verhält er sich manchmal so schlecht, dass der PHP-Prozess, der ihn erzeugt, eine Zeitüberschreitung aufweist oder so viel CPU-Zeit verbraucht, dass ein Sysadmin ihn tötet.
Gibt es einen Befehl, den ich ausführen könnte, der die CPU-Zeit / Laufzeit des Prozesses einschränken würde? Ich suche nach einem Befehl wie /usr/bin/time
, wo ich diesen Befehl ausführen und die Befehlszeile übergeben kann, die ich ausführen und begrenzen möchte.
setrlimit
und ich spawne ihn über PHP, also habe ich keine Shell ...time php /cgi/foo.php
, können Sie es verwendenbash -c 'ulimit -t 42; exec "$0" "$@"' php /cgi/foo.php
.Sie können den
timeout
Befehl auch verwenden, um zu verhindern, dass ein Prozess länger als eine bestimmte Zeit ausgeführt wird.Beispiel
Weitere Informationen finden Sie in der Manpage zur Zeitüberschreitung .
quelle