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 ответа на вопрос
5
whitequark
Хотя «события, генерируемые через определенные промежутки времени» являются запланированной функцией в Upstart, она пока не готова предоставить это. Таким образом, вы должны написать простой скрипт, как это:
#!/bin/sh service sshproxy restart
И положить его в /etc/cron.hourlyпапку. Не забудьте установить исполняемый бит ( chmod +x /etc/cron.hourly/whatever.sh), иначе он не запустится.
Работают ли пользовательские скрипты cron в режиме sudo?
Xiè Jìléi 13 лет назад
0
Нет, они запускаются как пользователь, которому они принадлежат, то есть, как если бы вы вызывали их вручную из терминала, когда вы вошли в систему как этот пользователь.
whitequark 13 лет назад
0
Как и большинство Upstart, это запланированная функция. Это действительно классная идея, но пока не реализована.
Tim Williscroft 13 лет назад
0
@Tim, Upstart в настоящее время прекрасно заменяет `init`, и все его запланированные функции фактически заменяют другие демоны Unix.
whitequark 13 лет назад
0
Вы также можете поместить initctl emit a_custom_event в cron и добавить или a_custom_event к стартовой строке в задании upstart.
nafg 10 лет назад
0
2
Gilles
Вместо того, чтобы перезапускать службу через фиксированные интервалы, вы можете перезапустить сервис, когда соединение разорвется. Передайте ServerAliveIntervalопцию, чтобы ssh быстрее обнаруживал разрыв соединения. Используйте respawnдирективу в сценарии Upstart для автоматического перезапуска туннеля. В качестве альтернативы, используйте программу перезапуска туннеля ssh, такую как autossh .