我有一个新贵服务,定义为:
/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 更快地检测断开的连接。使用respawn
Upstart 脚本中的指令可自动重启隧道。或者,使用 ssh 隧道重启程序,例如自动SSH。
答案2
虽然“按时间间隔生成的事件”是计划功能在 Upstart 中,它还没有准备好提供此功能。因此,你应该编写一个简单的脚本,如下所示:
#!/bin/sh
service sshproxy restart
并将其放入/etc/cron.hourly
文件夹中。不要忘记设置可执行位(chmod +x /etc/cron.hourly/whatever.sh
),否则它将无法启动。