2

У меня есть сервис выскочки, определенный как:

/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 ответа2

5

Хотя «события, генерируемые через определенные промежутки времени» являются запланированной функцией в Upstart, она пока не готова предоставить это. Таким образом, вы должны написать простой скрипт, как это:

#!/bin/sh
service sshproxy restart 

И поместите его в папку /etc/cron.hourly . Не забудьте установить исполняемый бит (chmod +x /etc/cron.hourly/whatever.sh), иначе он не запустится.

2

Вместо того, чтобы перезапускать службу через фиксированные интервалы, вы можете перезапустить сервис, когда соединение разорвется. Передайте параметр ServerAliveInterval чтобы ssh быстрее обнаруживала разорванное соединение. Используйте директиву respawn в сценарии Upstart для автоматического перезапуска туннеля. В качестве альтернативы, используйте программу перезапуска туннеля ssh, такую как autossh.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .