Eu quero ter um script de shell como este:
my-app &
echo $my-app-pid
Mas não sei como obter o pid do comando recém-executado.
Eu sei que posso apenas usar o jobs -p my-app
comando para cumprimentar o pid. Mas se eu quiser executar o shell várias vezes, esse método não funcionará. Porque o jobpec é ambíguo.
bash
shell
process
background-process
David S.
fonte
fonte
/bin/sh -c 'echo $$>/tmp/my.pid && exec program args' &
- sysfault 24 '10 novembro às 14:28echo $!
my-app & myVar=$! ; fg
.fg
traz o processo para o primeiro plano novamente. Posso imprimirecho $myVar
mais tarde e tenho certeza de que o meu aplicativo já terminou.Obter
PID
:Salvar
PID
na variável:Salve todas as instâncias
PID
no arquivo de texto:Salve saída, erros e
PID
em arquivos separados:fonte
my-app
concluída e, talvez ainda pior, seu PID seja reutilizado mais tarde, você terá informações ruins em seu arquivo. Eu não acho que esta resposta agregue muito valor à resposta aceita existente, na verdade #sleep 4 | grep INVALID & export MY_PID=$!; fg; echo $MY_PID returned with $?
`main &
uma maneira de pegar o PID?Tente algo como
fonte
Tente algo como isto:
Colocar a primeira letra do seu processo entre
[
]
garante que você não consiga ogrep
processo na sua lista. Se necessário, você também pode adicionar um grep ao seu nome de usuário.fonte
my-app
for executado mais de uma vez - davidshen84 se preocupa especificamente com esse caso.pgrep
.