GNU/Linux >> Tutoriels Linux >  >> Linux

Arrêter/tuer un processus à partir de la ligne de commande après un certain laps de temps ?

J'ai un code Python qui écoute et détecte les sons environnementaux. Ce n'est pas mon projet, je l'ai trouvé sur le web (SoPaRe). Avec le ./sopare.py -l commande, il commence à enregistrer des sons mais en boucle infinie. Quand je veux l'arrêter, je dois appuyer sur Ctrl+C .

Mon but est d'arrêter ce programme automatiquement après 10 secondes, mais quand j'ai parlé avec l'auteur, il m'a dit que le programme n'avait pas de limiteur de temps.

J'ai essayé de le tuer via kill PID , mais PID change à chaque exécution du programme. Comment peut-il l'arrêter après un intervalle de temps via bash ?

Alternativement, je peux exécuter cette commande à partir de python avec os.system() commande.

Réponse acceptée :

La solution la plus simple serait d'utiliser timeout de la collection de GNU coreutils (probablement installé par défaut sur la plupart des systèmes Linux) :

timeout 10 ./sopare.py -l

Voir le manuel de cet utilitaire pour plus d'options (man timeout ). Sur les systèmes non GNU, cet utilitaire peut être installé en tant que gtimeout si GNU coreutils est installé.

Une autre alternative, si GNU coreutils n'est pas disponible, est de démarrer le processus en arrière-plan et d'attendre 10 secondes avant de lui envoyer un signal de terminaison :

./sopare.py -l &
sleep 10
kill "$!"

$! sera l'ID de processus du processus d'arrière-plan le plus récemment démarré, dans ce cas de votre script Python.

Dans le cas où le temps d'attente est utilisé pour autre chose :

./sopare.py -l & pid=$!
# whatever code here, as long as it doesn't change the pid variable
kill "$pid"

Linux
  1. Utilisation de Stratis pour gérer le stockage Linux à partir de la ligne de commande

  2. Rapports d'E/S à partir de la ligne de commande Linux

  3. Comment redémarrer Icewm depuis la ligne de commande ?

  4. Exécuter des scripts Perl/PHP à partir de la ligne de commande

  5. Trouver la version de WordPress à partir de la ligne de commande

Configurer un espace de travail Linux à distance depuis la ligne de commande

Programmer le matériel à partir de la ligne de commande Linux

Suivi du temps avec Timewarrior en ligne de commande

Principes de base de la ligne de commande Linux - Exécution de commandes à partir de la ligne de commande

Comment démarrer des programmes Linux GUI à partir de la ligne de commande, mais séparément de la ligne de commande ?

Comment puis-je obtenir mon adresse IP à partir de la ligne de commande ?