Y a-t-il une commande bash/linux pour lancer une commande longue durée, puis la tuer après n minutes? Je suppose que je pourrais pirater quelque chose avec perl en utilisant fork et kill, mais est-ce que quelqu'un sait quelque chose déjà là-bas?bash: lance une commande pendant n minutes, puis SIGHUP
Répondre
Voir la commande timeout maintenant dans la plupart des distributions GNU/Linux.
timeout -sHUP 10m command
La même fonctionnalité peut être réalisé avec http://www.pixelbeat.org/scripts/timeout
Essayez-le avec celui-ci, il commence votre commande en arrière-plan, stocke son PID en $ P, attend un certain temps et le tue avec SIGHUP
.
yourCommand & PID=$!
sleep ${someMinutes}m
kill -HUP $PID
Vive
PS: qui suppose un sommeil qui sait Nm (minutes), sinon, vous voudrez peut-être faire un peu de maths :)
+1 et '$ sommeil ((minutes * 60))' :) – khachik
Khachik, qui est l'exercice pour le lecteur instruit;) –
Merci! C'est essentiellement le perl que je viens d'écrire, mais c'est agréable de le voir comme un simple idiot. Je voudrais toujours un script pré-construit, si quelqu'un en connaît un, mais je vais accepter cela comme réponse. –
n=5
some_command &
pid=$!
at now + $n minutes <<<"kill -HUP $pid"
L'avantage d'utiliser at
plus En attente de sleep
, votre script ne bloquera pas l'attente de l'expiration du sommeil. Vous pouvez aller et faire d'autres choses et at
tirera asynchrone à l'heure indiquée. Selon votre script, cela peut être une fonctionnalité très importante.
J'ai donné +1 pour la fonction asynchrone, bien que le blocage soit ce que j'avais en tête. –
C'est exactement ce que je cherchais! –