'jobs' não mostra nenhum processo em segundo plano

5

Quando eu estava no escritório usando minha área de trabalho, iniciei um script run.sh em segundo plano quatro vezes.

run.sh parameter1 &
run.sh parameter2 &
run.sh parameter3 &
run.sh parameter4 &

Depois cheguei em casa e abri um terminal no meu laptop, ssh, na área de trabalho do meu escritório. Quando executei ps -u jack , vi os processos iniciados:

 3562 pts/1    00:00:00 bash
 4540 pts/2    00:00:00 bash
 4643 pts/3    00:00:00 bash
 4748 pts/4    00:00:00 bash

Mas quando digitei jobs , não consegui nada. Por que eu pude ver esses quatro processos em segundo plano?

Btw, como eu posso trazê-los de volta ao meu terminal atual, para que eu possa matar um deles, digamos run.sh parameter4 & ?

    
por JackWM 13.06.2013 / 14:16

2 respostas

4

Com base na declaração do problema da pergunta, IMHO não vejo nenhum motivo para usar background ou foreground . Tudo o que importa é encontrar um processo que esteja sendo executado em segundo plano para que você possa eliminá-lo.

Execute ps -ef | grep parameter3 para encontrar processos que possuam parameter3 no nome do processo. Você pode adaptar o grep para identificar exclusivamente um processo, pois você não tem dois processos com exatamente o mesmo nome de processo.

Uma vez que você o tenha, basta fazer kill -9 PID e esse processo será eliminado. Portanto, não há necessidade de trazer esse processo para o primeiro plano para matá-lo.

Espero que isso ajude.

    
por 13.06.2013 / 14:41
12

Isso ocorre porque jobs mostra os comandos em segundo plano iniciados a partir do (mesmo) pertencente ao mesmo shell. Os processos do shell que estão sendo executados sob seu terminal de desktop e sob o terminal ssh são diferentes.

Consulte o link

Para poder controlar seus processos como trabalhos de terminais diferentes, você pode usar screen ou tmux , que são basicamente gerentes de terminais virtuais e podem reconectá-los a qualquer número de outros terminais.

Por exemplo, com screen você acabou de iniciá-lo, ele abre seu shell padrão e você trabalha com ele como faria com qualquer outro shell. Então, quando você chegar em casa e ssh na sua máquina do escritório, você pode executar screen -d -r para desanexar o terminal virtual do terminal de desktop do seu escritório e anexá-lo ao terminal ssh, retomando o trabalho. Você pode desanexar o terminal virtual do próprio screen pressionando Ctrl-A, d.

    
por 13.06.2013 / 14:21

Tags