Вот содержание /etc/network/interfaces
:
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp
post-up /etc/network/if-up.d/sshstart
И sshstart
это скрипт со следующим:
curl something something darkside send a file over ftps in the background &
/usr/bin/autossh -M 0 -f -N -o ServerAliveInterval=15 -o ServerAliveCountMax=3 -R 127.0.0.1:2005:127.0.0.1:22 -R 192.168.1.10:2006:192.168.2.110:1912 -L 127.0.0.1:5249:192.168.1.212:5249 username@17.16.15.2 -p 8080
Когда машина перезагружается, curl
команда выполняется несколько раз, файл заканчивается 2 или 3 раза на ftp-сервере, и когда я смотрю на процессы, кажется, что запущено несколько экземпляров autossh ... Не уверен, что это как autossh делает что-то или нет, но наверняка curl не должен загружать файл несколько раз.
Я догадываюсь, что весь sshstart
сценарий запускается несколько раз, но я не понимаю, почему.
Я попытался найти подробную информацию о процессе настройки сети при загрузке, но все, что я мог найти, это информация о синтаксисе для файла интерфейсов.
Может кто-нибудь помочь, пожалуйста?
Спасибо.
--- Редактировать ---
Как предложено ниже, я изменил свой интерфейсный файл следующим образом (убрал пустые строки над пост-ап):
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp
post-up /etc/network/if-up.d/sshstart
И добавил следующую строку в sshstart:
echo $(date)>>/run/shm/sshstart.log
Вот содержимое /run/shm/sshstart.log
после перезагрузки:
Wed Oct 29 08:07:00 EDT 2014
Wed Oct 29 08:07:07 EDT 2014
Wed Oct 29 08:07:07 EDT 2014
Wed Oct 29 08:07:07 EDT 2014
Так что его запускали 4 раза :( что происходит?
echo $(date)
это немного неловко и косвенно. Можно просто записать это как date
. Похоже на « Бесполезное использование кошки» .