EDITAR
Como você já perguntou como verificar se um processo está em execução ou não quando você sabe o nome dele, é uma operação pgrep
simples. Como alternativa, pode-se usar ps
e especificar state
opções para formatar
$ ps --no-headers -C firefox -o args,state
/usr/lib/firefox/firefox R
O código do estado está à direita. De man ps
você pode saber o significado deles:
D uninterruptible sleep (usually IO)
R running or runnable (on run queue)
S interruptible sleep (waiting for an event to complete)
T stopped, either by a job control signal or because it is
being traced
W paging (not valid since the 2.6.xx kernel)
X dead (should never be seen)
Z defunct ("zombie") process, terminated but not reaped by
its parent
Original
Na maioria das vezes, os aplicativos de console são executados com seu próprio nome. Se for um script, com uma linha !#
no topo, ele será executado com um intérprete especificado com essa linha, por exemplo, um script bash:
$ ps -ef | grep batmon
root 2108 1 0 22:22 ? 00:00:00 /bin/bash /home/xieerqi/bin/batmon.sh
No entanto, há scripts desse servidor como wrapper para outros aplicativos. Por exemplo, gnome-terminal
é na verdade um script que chama gnome-terminal.real
O que você sempre coloca em um aplicativo em segundo plano, que informa um pid desse processo
$ bin/batmon.sh &
[1] 3224
Você pode usar kill PID
(por exemplo, aqui, kill 3224
) para fechar o aplicativo diretamente ou usar ps
para encontrar seu nome:
$ ps --no-headers -p 3224 -o %a
/bin/bash bin/batmon.sh
Em geral, pkill
pode pesquisar os nomes fornecidos sem -f
, que significa nome completo. Você também pode pesquisar usando pgrep appNamePartial