Como posso determinar se um processo está sendo executado sem aviso no terminal?

3

Por ex - se eu digitar ping one.com, o processo continuará em execução - se eu quiser interromper esse processo, eu posso digitar Ctrl C, o que, se não me engano, matará o processo completamente. Se, em vez disso, parar com Ctrl Z, não é verdade que o processo ainda pode estar operando em segundo plano em algum nível? Como é possível identificar uma condição em que um processo está sendo executado, mas não pode ser visto na tela do terminal? Obrigado.

    
por bensatlantic 26.02.2016 / 23:21

2 respostas

7

Use o jobs integrado para ver as tarefas em execução no seu shell atual.

$ ping google.com >/dev/null 2>&1 &
[1] 32406

$ jobs
[1]+  Running                 ping google.com > /dev/null 2>&1 &

$ ping google.com
[...]
^Z
[2]+  Stopped                 ping google.com

$ jobs
[1]-  Running                 ping google.com > /dev/null 2>&1 &
[2]+  Stopped                 ping google.com

Para eliminar todos os trabalhos em execução, você pode aproveitar jobs -p , que lista os pids de todos os trabalhos.

$ for job in $(jobs -p); do kill $job; wait $job; done

Outras leituras: link

    
por 26.02.2016 / 23:32
1

execute ps -aux | grep "processname" para ver se o processo está sendo executado

execute kill "processID" para eliminar o processo especificado, PID é o segundo conjunto de números no comando anterior, de acordo com o processo de destino

execute killall "processname" para matar todos os processos com nome definido

    
por 26.02.2016 / 23:28