Como sair de um processo após negar

0

Eu uso disown para executar processos de longa execução via SSH. Por exemplo eu corro o seguinte programa:

vmd -e script.tcl > out.txt &

Então eu uso disown -a para separar a partir do shell. Quando reconectar o terminal, o out.txt mostra que o programa foi concluído. No entanto, mostra o prompt de comando do vmd ( vmd> ). VMD é um programa para executar scripts TCL para simulações de química. Você pode assumir que é algo como python com seu próprio shell

link

Depois de um tempo, não consegui me conectar ao ssh devido ao limite dos processos em execução ( fork retry: Resource temporary unavailable ). Primeiro, quero saber como posso matar esses processos renomados se estiverem em estado de espera.

Em segundo lugar, quero saber se eu sair do programa vmd colocando exit no final do meu script.tcl , resolveria o problema acima para usos futuros?

    
por Ahmad 10.06.2018 / 12:16

1 resposta

1

Há mais de uma maneira de fazer isso. (TM)

Solução 1 (provavelmente a melhor): adicione o comando para sair de vmd até o final do seu script.

Solução 2: redireciona a entrada padrão do comando vmd para (ou de, dependendo da sua mentalidade) o dispositivo nulo, da seguinte forma:

vmd -e script.tcl > out.txt < /dev/null &

Dessa forma, quando vmd terminar seu script e tentar ler o próximo comando a partir da entrada padrão, ele receberá "end of file" e sairá.

Solução 3: Mate o processo vmd restante com kill . Você precisará do seu PID para o que você pode notar como o shell imprime depois de iniciá-lo com & , ou encontrar através do comando ps ax . Tente kill -TERM (o padrão) primeiro, se isso não funcionar use kill -HUP . Do não use kill -KILL aka kill -9 .

Solução 4: use screen ou tmux em vez de disown . Dessa forma, você pode se reconectar ao processo vmd em execução e inserir outros comandos como exit .

    
por 10.06.2018 / 14:37