Alguém pode me dizer como obter o PID de um comando executado no bash.
Por exemplo, eu tenho um script bash que executa o imapsync.
Quando o script é finalizado, o processo do imapsync nem sempre é finalizado, então eu gostaria de poder identificar o PID do imapsync programaticamente a partir do meu script, para que eu possa finalizar o processo do imapsync em um manipulador de sinal.
Então, como obtenho programaticamente o PID de um processo filho a partir de um script bash pai?
Respostas:
O imapsync tem uma opção para definir onde seu pid é gravado:
--pidfile: o arquivo em que o imapsync pid está gravado.
fonte
O IOW, assim como
$$
mantém seu PID,$!
possui o PID do comando em segundo plano executado mais recentemente .fonte
/var/run/whatever.pid
. Talvez haja uma opção de linha de comando para solicitar que ele salve o PID em algum lugar; caso contrário, isso soa como um recurso para perguntar ao autor ou para se implementar.&
), a$!
variável é indefinida./bin/sh -c 'echo $$>/tmp/my.pid && exec program args' &
- sysfault 24 de novembro '10 às 14:28Ao contrário
pidof
,pgrep
pode ser dada uma variedade de opções para restringir para quais processos ele retorna PIDs. Um que pode ser particularmente útil é selecionar com base no PPID usando o PID do processo atual.que produzirá apenas PIDs do imapsync se forem filhos do seu script.
fonte
Que tal colocar o imapsync em segundo plano momentaneamente, obter o PID e colocá-lo em primeiro plano ... Algo assim:
fonte