Come posso iniziare un processo con un nome diverso?


12

Fondamentalmente voglio avviare dinamicamente alcuni processi che possono creare i propri processi figlio, inoltre voglio uccidere un certo gruppo di processi che ho appena creato ogni volta che lo desidero.

Un modo in cui mi viene in mente è di avviare i processi con un nome (per distinguerli come gruppo), quindi usarli pkillper ucciderli con il nome.

La domanda è: come avviare un processo con un nome in modo da poterlo usare pkillper ucciderli con il nome? Sono aperto anche ad altre soluzioni.


Stai chiedendo come avviare un processo con un nome diverso da quello che utilizza abitualmente ? Oppure stai solo chiedendo come avviare un processo dalla riga di comando?
Eliah Kagan,

Il nome del processo è mostrato come il nome del suo file per impostazione predefinita in Linux. Non voglio usare il nome file predefinito come nome processo né cambiare il nome file ogni volta che eseguo. Quindi voglio iniziare i processi con un nome specifico che voglio in modo da poter usare 'pkill -f MyOwnName' per uccidere tutti i processi che ho appena iniziato a chiamare MyOwnName in una sola volta.
cache

Risposte:


12

Puoi usare la execshell integrata:

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

<command>sostituisce la shell corrente, non viene creato alcun nuovo processo, ecco perché sto avviando una nuova shell da chiamare exec.

Quindi puoi terminare il processo con:

pkill -f MyUniqueProcessName

È possibile avviare più di un processo con lo stesso nome, quindi pkill -f <name>ucciderli tutti.


Come si annulla bash -c "exec -a MyUniqueProcessName <command> &"?
VNVN,

1
@VNVN non puoi. Se un comando è stato eseguito, è stato eseguito. Per "annullarlo", devi sapere esattamente cosa ha fatto e annullarlo manualmente, se possibile. Non c'è Ctrl + Z durante l'esecuzione dei comandi.
terdon,

+1. la mia osservazione è: il nome usato per exec -a name sleep 100appare quando lo faccio ps -efma non quando lo faccio pstree -p.
Trevor Boyd Smith,

Non funziona per la fusione. ->bash -c "exec -a mymeld123 meld &"
Eduardo Lucio,

0

AMItac / The Solaris Agency

ho questo caso con uno strumento di transcodifica audio. (in esecuzione 3 volte) ma ha un solo nome.

Ho seguito. Non sei andato al bin dir dallo strumento Shell e l'ho copiato 3 volte e gli ha dato un nuovo nome. tc-1, tc-2, tc-3 (è un piccolo strumento quindi non consuma molto spazio su disco rigido (con i binari grassi non dovresti usare gli altri modi citati)

quindi il processo è iniziato con un nome univoco e può essere interrotto con questo nome univoco senza il pericolo di uccidere altri processi di transcodifica che desidero continuare.

un altro trucco POTREBBE funzionare ...

aggiungi uno script #bash Name.sh, rendilo eseguibile. Digita i tuoi comandi lì e avvia lo script bash stesso. Su Centos utilizza quindi il Nome Bashscript che hai eseguito e non il Nome bin stesso.

Spero che qualcosa aiuti qualcuno là fuori.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.