在 upstart 中,如何每小时重启一次服务?

在 upstart 中,如何每小时重启一次服务?

我有一个新贵服务,定义为:

/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

但是 ssh 隧道似乎在几个小时后就被僵化了,所以我想每小时重新启动它,如何在这个 .conf 文件中执行此操作,或者我应该编写另一个 cron.hourly 作业?

答案1

您可以在连接中断时重新启动服务,而不是以固定的时间间隔重新启动服务。通过ServerAliveInterval使 ssh 更快地检测断开的连接。使用respawnUpstart 脚本中的指令可自动重启隧道。或者,使用 ssh 隧道重启程序,例如自动SSH

答案2

虽然“按时间间隔生成的事件”是计划功能在 Upstart 中,它还没有准备好提供此功能。因此,你应该编写一个简单的脚本,如下所示:

#!/bin/sh
service sshproxy restart 

并将其放入/etc/cron.hourly文件夹中。不要忘记设置可执行位(chmod +x /etc/cron.hourly/whatever.sh),否则它将无法启动。

相关内容