Comment démarrer un processus avec un nom différent?

12

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 pkillpour les tuer par le nom.

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

cache
la source
Demandez-vous comment démarrer un processus avec un nom différent de celui qu'il utilise habituellement ? Ou demandez-vous simplement comment démarrer un processus à partir de la ligne de commande?
Eliah Kagan
Le nom du processus est affiché de la même manière que son nom de fichier par défaut sous Linux. Je ne veux pas utiliser son nom de fichier par défaut comme nom de processus ni changer le nom de fichier à chaque fois que je lance. Je veux donc démarrer les processus avec un nom spécifique que je veux afin que je puisse utiliser "pkill -f MyOwnName" pour tuer tous les processus que je viens de commencer nommés MyOwnName à la fois.
cache

Réponses:

12

Vous pouvez utiliser le execshell intégré:

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 à 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 tuer tous.

Eric Carvalho
la source
Comment tu défais bash -c "exec -a MyUniqueProcessName <command> &"?
VNVN
1
@VNVN vous ne pouvez pas. Si une commande a été exécutée, elle s'est exécutée. Pour "l'annuler", vous devez savoir exactement ce qu'il a fait et l'annuler manuellement, si possible. Il n'y a pas Ctrl + Z lors de l'exécution des commandes.
terdon
+1. mon observation est: le nom utilisé pour exec -a name sleep 100apparaît quand je le fais ps -efmais pas quand je le fais pstree -p.
Trevor Boyd Smith,
Cela ne fonctionne pas pour la fusion. ->bash -c "exec -a mymeld123 meld &"
Eduardo Lucio
0

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.

user814973
la source