Nous avons un script qui s'exécute sur nos serveurs Web, déclenché par l'action du client, qui initie un processus Unix pour générer des fichiers de cache. Parce que ce processus agit sur les fichiers fournis par notre client, il se comporte parfois mal, s'exécutant si longtemps que le processus PHP qui le génère expire ou utilise tellement de temps CPU qu'un administrateur système le tuera.
Y a-t-il une commande que je pourrais exécuter qui limiterait le temps CPU / runtime du processus? Je cherche une commande comme /usr/bin/time
, où je pourrais exécuter cette commande et lui passer la ligne de commande que je veux qu'elle exécute et limite.
setrlimit
et je le génère via PHP, donc je n'ai pas de shell ...time php /cgi/foo.php
, vous pouvez l'utiliserbash -c 'ulimit -t 42; exec "$0" "$@"' php /cgi/foo.php
.Vous pouvez également utiliser la
timeout
commande pour empêcher un processus de s'exécuter plus longtemps qu'une durée spécifiée.exemple
Reportez-vous à la page de manuel du délai d'expiration pour plus de détails.
la source