Para obter o PID de um processo, use:
pidof postData.sh
Caminho alternativo:
pgrep postData.sh
Eu executei um script postData.sh, mas quando faço "ps -ef", não vejo o script na lista de programas em execução, mas vejo processos extra -bash em execução. Como faço para determinar o pid para que eu possa matar o script como está em segundo plano agora?
obrigado Dean
Para obter o PID de um processo, use:
pidof postData.sh
Caminho alternativo:
pgrep postData.sh
Isso pode ajudá-lo a encontrá-lo, pois ele imprimirá o ID do processo, o ID do processo pai e o comando estendido
ps -eo pid,ppid,start_time,command
e isso tornará uma árvore útil dos processos.
pstree -pu
Se você encontrar algo que deseje pausar, para avaliar se é o processo certo, você pode kill -STOP <pid>
e continuar com kill -CONT <pid>
OK, eu resolvi isso. os scripts que eu copiei estavam faltando o #!/bin/bash
e, por algum motivo, quando eu rodava o script no ps -ef, ele aparecia apenas como -bash. Agora que adicionei o #!/bin/bash
, ele aparece corretamente como
[root@sdi-prod-01 manytables]# ps -ef | grep postTemp
root 29165 28764 1 10:51 pts/12 00:00:00 /bin/bash ./postTemp.sh 1
grrrrrr, isso foi chato e todos os meus scripts já estão rodando, mas não posso distingui-los por causa disso ... viver e aprender, eu acho.
Se for o último processo com base no qual você pode simplesmente kill $!
.
Usar ps -x
gera o comando inteiro.
Tags bash shell-scripting