Как перезапустить сервис каждый час, в 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?
2 ответа
Вместо того, чтобы перезапускать службу через фиксированные интервалы, вы можете перезапустить службу, когда соединение разорвется. Пройти ServerAliveInterval
возможность заставить ssh быстрее обнаруживать обрыв соединения. Использовать respawn
директива в сценарии Upstart для автоматического перезапуска туннеля. В качестве альтернативы, используйте программу перезапуска туннеля ssh, такую как autossh.
Хотя "события, генерируемые через определенные промежутки времени" являются запланированной функцией в Upstart, она пока не готова предоставить это. Таким образом, вы должны написать простой скрипт, как это:
#!/bin/sh
service sshproxy restart
И положить его в /etc/cron.hourly
папка. Не забудьте установить исполняемый бит (chmod +x /etc/cron.hourly/whatever.sh
) или оно не запустится.