Como posso iniciar um processo com um nome diferente?


12

Basicamente, quero iniciar dinamicamente alguns processos que podem criar seus próprios filhos, também quero matar um certo grupo de processos que acabei de criar sempre que quiser.

Uma maneira de pensar é iniciar processos com um nome (para distinguir como um grupo) e depois usá pkill-los para matá-los pelo nome.

A questão é como iniciar um processo com um nome para que eu possa usá pkill-lo para matá-lo pelo nome? Também estou aberto a outras soluções.


Você está perguntando como iniciar um processo com um nome diferente do que ele normalmente usa ? Ou você está apenas perguntando como iniciar um processo a partir da linha de comando?
Eliah Kagan

O nome do processo é mostrado como o nome do arquivo por padrão no Linux. Não quero usar o nome do arquivo padrão como nome do processo nem alterar o nome do arquivo toda vez que executo. Então, eu quero iniciar os processos com um nome específico que eu quero, para que eu possa usar 'pkill -f MyOwnName' para matar todos os processos que eu acabei de iniciar chamado MyOwnName de uma só vez.
cache

Respostas:


12

Você pode usar o execshell embutido:

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

<command>substitui o shell atual, nenhum novo processo é criado, é por isso que estou iniciando um novo shell para chamar exec.

Então você pode matar o processo com:

pkill -f MyUniqueProcessName

Você pode iniciar mais de um processo com o mesmo nome e depois pkill -f <name>matar todos eles.


Como você desfaz bash -c "exec -a MyUniqueProcessName <command> &"?
VNVN 23/11

1
@VNVN você não pode. Se um comando foi executado, ele foi executado. Para "desfazer", você precisa saber exatamente o que fez e desfazer manualmente, se possível. Não há Ctrl + Z ao executar comandos.
terdon

+1. minha observação é: o nome usado exec -a name sleep 100aparece quando eu faço, ps -efmas não quando eu faço pstree -p.
Trevor Boyd Smith

Não funciona para fusão. ->bash -c "exec -a mymeld123 meld &"
Eduardo Lucio

0

AMItac / Agência Solaris

Eu tenho este caso com uma ferramenta de transcodificação de áudio. (executando três vezes), mas possui apenas UM nome.

Eu fiz seguindo. Não foi para o diretório bin da ferramenta Shell e o copiou três vezes e deu a ele um novo nome. tc-1, tc-2, tc-3 (é uma ferramenta pequena, para não consumir muito espaço no disco rígido (com binários gordos, você não deve usar as outras formas mencionadas)

portanto, o processo começou com um nome exclusivo e pode ser morto com esse nome exclusivo sem o risco de matar outros processos de transcodificação que eu quero continuar.

outro truque pode funcionar ....

adicione um script #bash Name.sh, torne-o executável. Digite seus comandos lá e inicie o próprio script bash. No Centos, ele usa o nome do Bashscript que você executou e não o nome do compartimento.

Espero que algo ajude alguém lá fora.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.