ssh: propaga o sinal para o processo remoto

3

Esta é a versão geral de: Enviar sinal SIGTERM para um processo rodando dentro do ssh

É possível enviar Ctrl-C para o processo remoto se o processo obtiver um pty (-tt):

# Runs for 5 seconds
(sleep 5; echo '^C'; sleep 5) | time ssh -tt localhost burnP6

Eu esperava que o mesmo funcionasse para Ctrl-Z, mas, infelizmente, não:

# Continues to run - does not suspend
(sleep 5; echo '^Z'; sleep 5) | time ssh -tt localhost burnP6

Se eu obtiver uma sessão interativa, Ctrl-C e Ctrl-Z funcionarão bem.

Existe uma maneira de enviar outros sinais (estou especialmente interessado em Ctrl-Z)?

Eu não posso usar o sugerido "ssh hostname 'kill -TERM $ pid'" pois não conheço os pids no sistema remoto.

    
por Ole Tange 12.05.2013 / 21:40

1 resposta

0

Você realmente precisa de um tty?

Você pode usar apenas ssh server killall burnP6 se houver apenas um processo com esse nome.

Ou você poderia de alguma forma escrever o IP do seu processo em um arquivo e então usar algo como 'ssh server kill $ (cat /tmp/burnP6.pid) ".

Ou uma implementação mais simples e robusta seria usar o pacote daemon , destinado a daemonizar programas que não sejam daemon e que não sejam daemon. Ele permite que você grave automaticamente o PID do daemon em um arquivo e o mate facilmente. Pode até relançar o seu processo caso ele morra.

Para começar:

ssh server daemon -n burnP6 -- /usr/bin/burnP6

Para parar:

ssh server daemon --stop -n burnP6 
    
por 27.10.2014 / 10:41

Tags