web-dev-qa-db-fra.com

Comment puis-je démarrer un processus avec un nom différent?

En gros, je souhaite démarrer de manière dynamique certains processus susceptibles de créer leurs propres processus enfants. Je souhaite également supprimer un certain groupe de processus que je viens de créer chaque fois que je le souhaite.

Une façon dont je pourrais penser est de démarrer les processus avec un nom (pour les distinguer en tant que groupe), puis d’utiliser pkill pour les tuer par leur nom.

La question est de savoir comment démarrer un processus avec un nom afin que je puisse utiliser pkill pour les tuer par leur nom. Je suis également ouvert à d'autres solutions.

9
cache

Vous pouvez utiliser le shell intégré exec:

bash -c "exec -a MyUniqueProcessName <command> &"

<command> remplace le Shell actuel, aucun nouveau processus n'est créé, c'est pourquoi je lance un nouveau Shell pour appeler exec.

Ensuite, vous pouvez tuer le processus avec:

pkill -f MyUniqueProcessName

Vous pouvez démarrer plusieurs processus sous le même nom, puis pkill -f <name> les éliminera tous.

10
Eric Carvalho

AMItac/Agence Solaris

j'ai ce cas avec un outil de transcodage audio. (en cours d'exécution 3 fois) mais n'a qu'un nom.

J'ai suivi. Wen´t dans le répertoire bin de l'outil Shell et l'a copié 3 fois pour lui donner un nouveau nom. tc-1, tc-2, tc-3 (c’est un petit outil qui ne mange pas beaucoup d’espace disque (avec de gros fichiers binaires, vous ne devriez pas utiliser les autres méthodes mentionnées)

le processus a donc commencé avec un nom unique et peut être tué avec ce nom unique sans risquer de tuer d'autres processus de transcodage que je souhaite poursuivre.

une autre astuce pourrait fonctionner ....

ajoutez un script #bash Name.sh, rendez-le exécutable. Tapez vos commandes ici et lancez le script bash lui-même. Sur Centos, il utilise ensuite le nom Bashscript que vous avez exécuté et non le nom du bac lui-même.

J'espère que quelque chose aide quelqu'un là-bas.

0
user814973