Je veux limiter la grep
durée pendant laquelle une commande de processus est autorisée à s'exécuter ou à être vivante.
Par exemple. Je souhaite effectuer les opérations suivantes:
grep -qsRw -m1 "parameter" /var
Mais avant d'exécuter la grep
commande, je veux limiter la durée de vie du grep
processus, par exemple pas plus de 30 secondes.
Comment puis-je faire cela?
Et si c'est le cas, comment puis-je retourner ou réinitialiser pour n'avoir aucune limite de temps par la suite.
timeout
et vous avez même reçu des instructions pour l'installer. Il est impoli d'ignorer cette réponse, puis de dupliquer votre question.Réponses:
Vous pouvez utiliser timelimit , il est disponible dans l'ubuntu par défaut ou vous pouvez le compiler vous-même.
timelimit exécute une commande et termine le processus généré après un temps donné avec un signal donné. Un signal "d'avertissement" est envoyé en premier, puis, après un délai d'attente, un signal "kill", similaire à la façon dont init (8) fonctionne à l'arrêt.
la source
sudo aptitude install timelimit
. Fonctionne très bien une fois installé.Voici quelques bash légèrement hackers pour cela:
Fondamentalement, il démarre la recherche en arrière-plan, puis démarre un sous-shell qui attend 30 secondes, puis tue le processus de recherche. Si la recherche dure moins de 30 secondes, le processus sera déjà mort. Ce n'est pas une bonne idée de tuer un processus qui est déjà mort car il y a très peu de chances que quelque chose d'autre réutilise le pid, mais pour quelque chose comme ça, c'est généralement bien. Enfin, la recherche est remise au premier plan et se poursuivra jusqu'à ce qu'elle se termine ou soit supprimée.
la source
Créez un nouveau fichier appelé "tgrep" et mettez-y ce qui suit (ou appelez-le comme vous voulez):
Ensuite, exécutez
chmod a+x tgrep
. Maintenant, si vous voulez l'utiliser, vous pouvez taperOu vous pouvez simplement l'utiliser comme tgrep (sans le ./ et pouvoir l'utiliser à partir de n'importe quel répertoire) si vous le placez dans un répertoire contenu dans votre variable $ PATH (comme / home / dan / bin /, si c'est dans votre variable $ PATH, sinon vous pouvez l'ajouter).
la source