Como eu verifico se um determinado aplicativo está sendo executado por seu nome de arquivo?

1

Como posso verificar se um determinado aplicativo está sendo executado por seu nome de arquivo? Ou se isso não for possível, então por sua linha de comando? Eu sei que "pkill" tem a opção "-f" mas não preciso matá-lo, apenas verifique.

Atualização:

Eu quero obter o status de um (a) determinado (s) aplicativo (s) apenas no bash, de preferência se eu não precisar filtrar a saída para pesquisar o status do aplicativo que desejo verificar o Estado de.

Se isso importa, é um script python ou ruby, preciso verificar o status de ambos.

    
por Mr. Mister 12.02.2016 / 06:26

2 respostas

2

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

    
por Sergiy Kolodyazhnyy 12.02.2016 / 06:41
3

Se você quiser acompanhar os processos, você pode ter o famoso comando:

top

mas você quer por nome de arquivo, então você precisará adicionar um parâmetro como:

top -c
    
por Techjail 12.02.2016 / 06:51