Wie starte ich einen Dienst jede Stunde beim Start neu?

5729
Xiè Jìléi

Ich habe einen Upstart-Service als:

/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 

Aber der SSH-Tunnel scheint nach einigen Stunden zombiert zu sein, also möchte ich ihn jede Stunde neu starten. Wie kann ich das in dieser .conf-Datei tun, oder sollte ich einen weiteren cron.hourly-Job schreiben?

2

2 Antworten auf die Frage

5
whitequark

"In zeitgesteuerten Intervallen generierte Ereignisse" ist zwar eine geplante Funktion in Upstart, kann dies jedoch noch nicht bereitstellen. Sie sollten also ein einfaches Skript wie folgt schreiben:

#!/bin/sh service sshproxy restart  

Und lege es in einen /etc/cron.hourlyOrdner. Vergessen Sie nicht, ein ausführbares Bit ( chmod +x /etc/cron.hourly/whatever.sh) zu setzen, sonst wird es nicht gestartet.

Werden User-cron-Skripte im `sudo`-Modus ausgeführt? Xiè Jìléi vor 13 Jahren 0
Nein, sie werden als der Benutzer ausgeführt, zu dem sie gehören, dh wenn Sie sie manuell vom Terminal aus anrufen, wenn Sie als dieser Benutzer angemeldet sind. whitequark vor 13 Jahren 0
Wie die meisten von Upstart ist es eine geplante Funktion. Es ist eine wirklich coole Idee, die aber noch nicht umgesetzt wurde. Tim Williscroft vor 13 Jahren 0
@Tim, Upstart ersetzt derzeit "init" gut, und alle geplanten Funktionen ersetzen eigentlich andere Unix-Daemons. whitequark vor 13 Jahren 0
Sie können auch initctl emit a_custom_event in cron eingeben und a_custom_event zum Start online des Upstart-Jobs hinzufügen nafg vor 10 Jahren 0
2
Gilles

Anstatt den Dienst in festen Intervallen neu zu starten, können Sie den Dienst neu starten, wenn die Verbindung abbricht. Übergeben Sie die ServerAliveIntervalOption, damit ssh eine unterbrochene Verbindung schneller erkennt. Verwenden Sie die respawnAnweisung im Upstart-Skript, um den Tunnel automatisch neu zu starten. Alternativ können Sie ein ssh-Tunnel-Neustartprogramm wie autossh verwenden .

Tolle Informationen! Xiè Jìléi vor 13 Jahren 0