Como reiniciar um serviço a cada hora, em upstart?

2

Eu tenho um serviço upstart definido como:

/etc/init/sshproxy.conf

description    "Lenik's secret tunnel thru *.ssh.myserver.com"
author        "谢继雷 (Lenik)"

start on (net-device-up IFACE!=lo)
stop on runlevel[!2345]

script

    # -T disable pseudo-tty allocation
    # -f go to background after login but before command exec
    # -n stdin from /dev/null, must be used when ssh is run in bg.
    # -N no command
    # -D "dynamic" app-level port forwarding.
    sudo -usshproxy ssh -qTfn -ND *:7878 ssh.myserver.com

end script

Mas o túnel ssh parece estar zumbido depois de algumas horas, então eu quero reiniciá-lo a cada hora, como fazê-lo dentro deste arquivo .conf, ou devo escrever outro trabalho cron.hourly?

    
por Xiè Jìléi 25.11.2010 / 02:48

2 respostas

2

Em vez de reiniciar o serviço em intervalos fixos, você pode reiniciar o serviço quando a conexão for interrompida. Passe a opção ServerAliveInterval para fazer com que o ssh detecte uma falha conexão mais rápida. Use a diretiva respawn no script Upstart para que o túnel seja reiniciado automaticamente. Como alternativa, use um programa de reinicialização de túnel ssh, como autossh .

    
por 26.11.2010 / 00:25
5

Embora "eventos gerados em intervalos programados" seja um recurso planejado no Upstart, ainda não está pronto para isso. Então você deve escrever um script simples como este:

#!/bin/sh
service sshproxy restart 

E coloque-o na pasta /etc/cron.hourly . Não se esqueça de definir um bit executável ( chmod +x /etc/cron.hourly/whatever.sh ) ou ele não será iniciado.

    
por 25.11.2010 / 03:10