Grava um arquivo PID manualmente a partir do script Bash

9

Como eu poderia escrever um script Bash que executa um programa de longa duração e armazena o id do processo de programas em um arquivo separado?

Eu quero algo como

#!/bin/bash
exec long_running_tool
echo 'ps af |grep "long_running_tool" |awk '$5 == "long_running_tool" {print $1}'' > pid_file

No entanto, fazer exatamente isso executaria a ps após a conclusão da ferramenta .

Existe uma maneira de obter o ID do processo criado?

    
por DerMike 27.01.2011 / 10:30

2 respostas

12

Você pode facilmente executar o processo em segundo plano com "&" e, em seguida, obter o PID do processo em segundo plano usando "$!"

#!/bin/bash
long_running_tool &
echo $! > pid_file

Então, opcionalmente, espere $! se você quiser que o shell bloqueie até que o processo complete a execução.

    
por 27.01.2011 / 10:40
8
#!/bin/bash
echo $$ > fooapp.pid
exec fooapp

Como mencionado anteriormente, exec substitui bash pelo programa especificado, retendo o PID.

    
por 27.01.2011 / 16:26

Tags