como fechar os trabalhos um por um? Existe alguma opção?

1

Existe uma lista de trabalhos em execução.

pdf is opened
image is opened
text file opened

Está tudo em fg / bg.

Existe alguma opção para fechar o trabalho em particular com força? Além disso, quero saber se os trabalhos podem ser fechados com a ajuda de um comando.

    
por Udhayakumar 05.12.2013 / 18:07

4 respostas

5

Contanto que todos os trabalhos tenham sido iniciados a partir do seu shell atual: use 'jobs' para obter uma lista de jobs em segundo plano. Cada um terá um identificador numérico, começando em '1'. Então você pode trazer o trabalho para o primeiro plano com fg %1 , enviá-lo para o segundo plano se ele estiver em pausa com bg %1 ou matá-lo com kill %1 (use o número correto para o trabalho que você está tentando matar, claro).

$ jobs
$ sleep 20 &
[1] 1770
$ sleep 30 &
[2] 1771
$ sleep 40 &
[3] 1773
$ jobs
[1]   Running                 sleep 20 &
[2]-  Running                 sleep 30 &
[3]+  Running                 sleep 40 &
$ kill %2
$ jobs
[1]   Running                 sleep 20 &
[2]-  Terminated              sleep 30
[3]+  Running                 sleep 40 &
$ jobs
[1]-  Running                 sleep 20 &
[3]+  Running                 sleep 40 &
$ 
    
por 05.12.2013 / 18:47
2

Existem algumas ferramentas básicas para isso, sendo as mais úteis pgrep e pkill , mas você também deve dar uma olhada em kill e killall . Resumidamente, pgrep permite que você procure por processos e retorne seu ID do processo (PID) e os outros três permitem que você mate processos . Usarei evince , meu visualizador de PDF para este exemplo.

  1. Obtenha o PID do processo usando pgrep :

    $ pgrep evince
    10834
    

    Portanto, evince está em execução e tem o PID 10834. Observe que, se você tiver várias instâncias de evince open, obterá muitos PIDs:

    $ pgrep evince
    10834
    11834
    11885
    
  2. Mate o processo pelo PID:

    $ pkill 10834
    
  3. Mate todos os PIDs retornados por pgrep evince :

    $ kill $(pgrep evince)
    
  4. Mate todos os processos denominados evince :

    killall evince
    

Portanto, use killall PROG_NAME para matar todas as instâncias em execução de um programa usando seu nome, por exemplo. %código%. Use killall firefox ou pkill para PIDs únicos e kill para muitos PIDs.

    
por 05.12.2013 / 18:34
0

Sim, você pode matar um único trabalho com o PID atribuído a um trabalho.

Por exemplo, um trabalho ntpd

1º Você tem que pegar o PID do trabalho ntpd:

~$>ps aux | grep ntpd

ntp 2911 0.0 0.0 30204 1204 ? Ss Oct15 0:03 ntpd -u ntp:ntp -p /var/run/ntpd.pid -g

root 14932 0.0 0.0 105348 864 pts/3 S+ 18:19 0:00 grep --color ntpd

Você pode obter o PID da segunda coluna. Esse número é o PID atribuído.

Depois disso, você só precisa terminar com o comando kill:

~$>kill 2911

Existem maneiras mais extravagantes, mas isso é o mais rápido na minha opinião.

    
por 05.12.2013 / 18:24
0

O comando básico para o processo de exclusão é:

:~$ pkill -9 PROCESS_NAME

substitua "PROCESS_NAME" pelo seu nome de processo que você deseja matar. mata todos os processos que pertencem ao nome do processo.

    
por 06.12.2013 / 05:51