Ваша @reboot
задача cron запускается до того, как адрес будет установлен.
Более надежным подходом было бы запустить скрипт из механизма ловушек "post-up" вашего сетевого конфигуратора, например, через /etc/NetworkManager/dispatcher.d
.
У меня есть следующий скрипт в домашнем каталоге myuser
#!/bin/bash # startup.sh export HOST_IP=$(/bin/ip -4 addr show enp2s0 | /bin/grep -Po 'inet \K[\d.]+') echo "Using HOST_IP=$HOST_IP"
и следующая запись в crontab моего пользователя (не корневой crontab)
@reboot /home/myuser/startup.sh > /home/myuser/restart.log 2>&1
Если я запускаю команду сам, я вижу следующий вывод
> ./startup.sh Using HOST_IP=192.168.1.15
Но если я перезагружаю машину, а затем проверяю, restart.log
я вижу
> cat ./restart.log Using HOST_IP=
Я использую полный путь - х до ip
и grep
команды, так что я не понимаю, почему я не получаю никакого значения для переменного окружения при запуске из кронтаба?
Ваша @reboot
задача cron запускается до того, как адрес будет установлен.
Более надежным подходом было бы запустить скрипт из механизма ловушек "post-up" вашего сетевого конфигуратора, например, через /etc/NetworkManager/dispatcher.d
.