Linux para o processo de background via kill + PID

2

Aqui, o link diz que para interromper o processo em segundo plano kill + PID deve ser usado. No entanto, não consigo parar o processo em segundo plano usando kill + PID, apenas kill + JOB ID

[KPE@home Temp]$ jobs
[KPE@home Temp]$ ps
  PID TTY          TIME CMD
13270 pts/0    00:00:00 bash
23257 pts/0    00:00:00 ps
[KPE@home Temp]$ mc &
[1] 23258
[KPE@home Temp]$ ps
                             PID TTY          TIME CMD
13270 pts/0    00:00:00 bash
23258 pts/0    00:00:00 bash
23262 pts/0    00:00:00 mc
23264 pts/0    00:00:00 ps

[1]+  Stopped                 . /usr/libexec/mc/mc-wrapper.sh
[KPE@home Temp]$ kill -s 15 23262
[KPE@home Temp]$ ps
  PID TTY          TIME CMD
13270 pts/0    00:00:00 bash
23258 pts/0    00:00:00 bash
23262 pts/0    00:00:00 mc
23266 pts/0    00:00:00 ps
[KPE@home Temp]$ kill %1
[1]+  Terminated              . /usr/libexec/mc/mc-wrapper.sh
[KPE@home Temp]$ ps
  PID TTY          TIME CMD
13270 pts/0    00:00:00 bash
23267 pts/0    00:00:00 ps
[KPE@home Temp]$ 

Então a questão - como parar o processo bg via kill by pid

    
por iJava 22.04.2015 / 16:03

2 respostas

4

Se você C-Z o programa mc (= envia um SIGSTP ou SIGSTOP = suspende ele (mostrará como "Parado" no shell)), ele não será imediatamente receptivo a nenhum mais sinais (diferente de SIGKILL , mas usando esse não é muito bom) até que seja retomado. Depois de retomar com SIGCONT , ele aceitará seu sinal SIGTERM (e os sinais que enfileiraram para ele enquanto estava suspenso).

kill -CONT $!; kill -TERM $! # $! refers to the pid of the last-spawned job

kill %1 funciona porque o kill embutido do shell provavelmente executa essas duas etapas.

    
por 22.04.2015 / 16:34
1

Primeiro pegue o pid

ps aux | grep process_name funciona para mim

Você deve obter uma saída como:

root      2545  0.0  0.0  85128  3128 ?        Ss   Apr19   0:07 /usr/sbin/apache2 -k start
www-data  2569  0.0  0.0 2011388 10132 ?       Sl   Apr19   1:19 /usr/sbin/apache2 -k start
www-data  2570  0.0  0.0 2011380 10108 ?       Sl   Apr19   1:22 /usr/sbin/apache2 -k start
coteyr   23344  0.0  0.0  11748   928 pts/3    S+   10:12   0:00 grep --colour=auto apache

Então você pode kill 2545 ou kill -9 2545 ou o que você quiser.

Dito isto, você quer evitar usar kill se puder. Use o método "adequado" para matar o processo. Geralmente há algum tipo de limpeza que um processo de segundo plano faz que você pode estar perdendo. Ainda às vezes não há outro caminho.

    
por 22.04.2015 / 16:15