O PID do último comando executado está no % variável de shell$!
:
my-app &
echo $!
Eu quero ter um script de shell como este:
my-app &
echo $my-app-pid
Mas eu não sei como obter o pid do comando recém executado.
Eu sei que posso usar apenas o comando jobs -p my-app
para grep o pid. Mas se eu quiser executar o shell várias vezes, esse método não funcionará. Porque o jobspec é ambíguo.
O PID do último comando executado está no % variável de shell$!
:
my-app &
echo $!
Obter PID
:
#!/bin/bash
my-app &
echo $!
Salvar PID
na variável:
#!/bin/bash
my-app &
export APP_PID=$!
Salvar todas as instâncias PID
no arquivo de texto:
#!/bin/bash
my-app &
echo $! >>/tmp/my-app.pid
Salvar saída, erros e PID
em arquivos separados:
#!/bin/bash
my-app >/tmp/my-app.log 2>/tmp/my-app.error.log &
echo $! >>/tmp/my-app.pid
echo "my-app PID's: $(cat /tmp/my-app.pid)"
Tente algo como
pidof my_app >> /tmp/my_app.pid
Você também pode usar pkill para isso Com o pkill você pode simplesmente especificar o nome do processo e evitar pegar o pid
Tente algo assim:
ps ef | grep "[m]y-app" | awk '{print $2}'
Colocar a primeira letra do seu processo entre [
]
garante que você não obtenha o processo grep
em sua lista. Se necessário, você também pode adicionar um grep em seu nome de usuário.