O imapsync tem uma opção para definir onde o seu pid é escrito:
- pidfile: o arquivo onde o pid do imapsync está escrito.
Alguém pode me dizer como obter o PID de um comando executado no bash.
Por exemplo Eu tenho um script bash que roda o imapsync.
Quando o script é eliminado, o processo do imapsync nem sempre é eliminado, portanto, gostaria de poder identificar o PID do imapsync programaticamente a partir do meu script, para que eu possa matar o processo do imapsync em um manipulador de sinal.
Então, como faço para obter o PID de um processo filho através de programação script pai?
any_command args &
my_child_PID=$!
IOW, assim como $$
mantém seu PID, $!
tem o PID do comando de plano de fundo executado mais recentemente .
Ao contrário de pidof
, pgrep
pode receber várias opções para restringir a quais processos ele retorna PIDs. Um que pode ser particularmente útil é selecionar com base no PPID usando o PID do processo atual.
pgrep -P $$ imapsync
que só produzirá PIDs do imapsync se eles forem filhos do seu script.
Que tal colocar o imapsync em segundo plano momentaneamente, obtendo o PID e, em seguida, colocando em primeiro plano ... Algo parecido com isto:
imapsync &
pid=$!
wait $pid
retVal=$?