Fondamentalement, je veux démarrer dynamiquement certains processus qui peuvent créer leurs propres processus enfants, aussi je veux tuer un certain groupe de processus que je viens de créer quand je veux.
Une façon dont je pourrais penser est de démarrer des processus avec un nom (pour distinguer en tant que groupe), puis de les utiliser pkill
pour les tuer par le nom.
La question est de savoir comment démarrer un processus avec un nom afin que je puisse utiliser pkill
pour les tuer par le nom? Je suis également ouvert à d'autres solutions.
Réponses:
Vous pouvez utiliser le
exec
shell intégré:<command>
remplace le shell actuel, aucun nouveau processus n'est créé, c'est pourquoi je lance un nouveau shell à appelerexec
.Ensuite, vous pouvez tuer le processus avec:
Vous pouvez démarrer plusieurs processus sous le même nom, puis
pkill -f <name>
les tuer tous.la source
bash -c "exec -a MyUniqueProcessName <command> &"
?exec -a name sleep 100
apparaît quand je le faisps -ef
mais pas quand je le faispstree -p
.bash -c "exec -a mymeld123 meld &"
AMItac / The Solaris Agency
j'ai ce cas avec un outil de transcodage audio. (exécuté 3 fois) mais n'a qu'un seul nom.
J'ai suivi. Je ne suis pas allé dans le répertoire bin de l'outil Shell, je l'ai copié 3 fois et je lui ai donné un nouveau nom. tc-1, tc-2, tc-3 (c'est un petit outil donc il ne mange pas beaucoup d'espace sur le disque dur (avec des binaires gras, vous ne devriez pas utiliser les autres méthodes mentionnées)
ainsi le processus a commencé avec un nom unique et peut être tué avec ce nom unique sans danger de tuer d'autres processus de transcodage que je veux continuer.
une autre astuce pourrait fonctionner ....
ajoutez un script #bash Name.sh, rendez-le exécutable. Tapez-y vos commandes et lancez le script bash lui-même. Sur Centos, il utilise ensuite le nom de Bashscript que vous avez exécuté et non le nom de la corbeille lui-même.
J'espère que quelque chose aide quelqu'un là-bas.
la source