Я использую Debian 7 Wheezy, и мне нужно запустить несколько экранов при запуске, как только появится полностью функциональное подключение к Интернету. Однако, нет, если интернет-соединение оборвалось и было снова подключено. Так что только по первому функциональному интернет подключению после загрузки.
Не могли бы вы опубликовать фиктивный сценарий для этого и сказать мне, где его поставить и чтобы он выполнялся в данных условиях?
Сценарий должен только запустить экран и затем завершиться, но экран должен продолжаться.
РЕДАКТИРОВАТЬ
Я уже слышал о /etc/network/if-up.d/
папке. Но как я могу убедиться, что скрипт не будет выполнен снова, если интернет-соединение потеряно, а затем восстановлено?
debian
networking
startup
MinecraftShamrock
источник
источник
Ответы:
Вставьте ваш скрипт
/etc/network/if-up.d
и сделайте его исполняемым. Он будет автоматически запускаться каждый раз, когда появляется сетевой интерфейс.Чтобы он работал только при первом запуске при каждой загрузке, попросите его проверить наличие файла флага, который вы создаете после первого раза. Пример:
источник
/var/run
есть нестабильная файловая система (аtmpfs
). Так что он гарантированно будет пустым при каждой новой загрузке.python -c 'import os; os.open("/var/run/work-was-already-done", os.O_EXCL|os.O_CREAT, 0)' 2>/dev/null || exit 0
IFACE
нетlo
- или какой-то виртуальный интерфейс - или лучше, проверьте подключение к Интернету с помощью ping$IFACE
может иметь в качестве значений любой интерфейс, который подходит. Вы можете перечислить все интерфейсы, которые существуют,ip link
или посмотреть, какие из них настроены для сканирования при сканировании/etc/network/interfaces
Эта работа очень хорошо подходит для
systemd
.Запуск сценария как службы systemd
Если ваша система работает под управлением systemd , вы можете настроить скрипт для запуска в качестве службы systemd, которая обеспечивает контроль над жизненным циклом и средой выполнения, а также предварительные условия для запуска скрипта, такие как работоспособность и работоспособность сети.
Рекомендуемая папка для ваших собственных сервисов
/etc/systemd/system/
(другой вариант,/lib/systemd/system
но обычно его следует использовать только для сервисов OOTB).Создайте файл, например, с помощью
sudo vim /etc/systemd/system/autossh.service
:Теперь вы можете протестировать сервис:
Проверка статуса услуги:
Остановка сервиса:
После того, как вы убедились, что сервис работает должным образом, включите его:
источник
Подключение к интернету вызвано записью в
/etc/rc6.d/
вероятноS35networking
. Если вы изменяете этот файл и вставляете свои команды в конце, или лучше добавляете/etc/init.d/mystuff
ссылку и ссылку/etc/rc0.d/S36mystuff
на него и вставляете туда свои команды, то это начнется, как только сеть начнет работать.источник
/etc/network/if-up.d
/etc/rc0.d
не будет запущен при запуске, он будет работать при завершении работы (уровень запуска 0). При запуске это будет что-то/etc/rc2.d
похожее. Специально для Debian Wheezy OP, это/etc/rcS.d/S12networking
. Конечно, все это ссылки на один и тот же файл. Кроме того, кстати, Антон, спасибо, что исправили мой ответ: «Пожалуйста» вместо «Поставить»? Какая странная опечатка!if-up.d
общий механизм, который также работает на повторное подключение.