Как заставить сервис включиться строго при наличии доступа в Интернет?
Столкнулся с проблемой. У меня есть сервис, который должен стартовать из systemd при загрузке. Заставить его загружаться при относительно штатной загрузке, а также из-под emergency mode я смог. Но дело в том, что он стартует раньше сетевых демонов systemd, которые выдают доступ в Интернет. А моему демону желательно стартовать строго после них
[Unit]
Description=Nothing
[Service]
ExecStart=/root/systemd/main
Type=simple
User=root
Group=root
After=networking.service NetworkManager-wait-online.service
[Install]
WantedBy=multi-user.targer emergency.target
cmdline такой, так что я вижу логи:
linux /boot/vmlinuz-5.16.7 ro
И мой сервис стартует до запуска сетевых сервисов. Как это исправить - либо из самого systemd, либо как проверить выход в Интернет на C++ (исполняемый файл - C++ программа)?
Ответы (1 шт):
After строчка пишется в раделе [Unit], но возможно Вам нужен Requires
[Unit]
Description=Nothing
Requires=NetworkManager-wait-online.service
[Service]
Проверку реального интернета проще сделать на bash скрипте и поставить его в ExecPre=/usr/local/bin/check-online.sh
#!/bin/bash
while ! wget -O/dev/null http://gstatic.com/generate_204; do sleep 10; done;
Можно использовать ping или дёргать ресурс вашего приложения