Como terminar um script de shell?

2

Estou trabalhando em um supercomputador e tenho um script de shell que automaticamente agenda um monte de tarefas para mim. Uma vez que o script é executado, eu posso finalizar manualmente com Ctrl + C . Eu estava executando o script de uma sessão unix screen e terminei o screen , mas o script ainda está em execução e enviando trabalhos. Parece estar preso em um loop e não terminar, consumindo assim preciosas horas-núcleo.

Eu tentei ps -u [user] , mas ele não aparece. Eu sei que ainda está sendo executado em segundo plano e só preciso matá-lo.

Editar: uname -a fornece o seguinte resultado:

Linux blogin3 2.6.32-431.20.3.el6.x86_64 #1 SMP Thu Jun 19 21:14:45 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux

Então eu acho que o supercomputador está rodando Linux.

    
por user1799323 17.07.2014 / 16:13

1 resposta

1

Isso é difícil de depurar com as informações que você forneceu, mas considere isto:

$ cat foo.sh 
#!/usr/bin/env bash
while true
do 
    echo yes; 
done

Isso é apenas um loop infinito simples. Se eu lançar o script com ./foo.sh , posso encontrá-lo na saída de ps :

$ ps aux | grep foo.sh
terdon   25568  0.0  0.0  10996  1424 pts/12   S+   16:19   0:00 bash /home/terdon/scripts/foo.sh
terdon   25982  0.0  0.0  10356   928 pts/11   S+   16:23   0:00 grep --color foo.sh

Para eliminá-lo, a abordagem mais simples seria usar pkill e seu sinal -f :

   -f, --full
          The pattern is normally only matched against the  process  name.
          When -f is set, the full command line is used.

Então, tente:

pkill -f foo.sh
    
por 17.07.2014 / 16:26