У меня есть скрипт, который запускается, когда сервер (Ubuntu 14.04) загружается с помощью @reboot в crontab (под пользователем root)
@reboot /bin/bash /root/init.sh >> /var/logs/vminit.log
Скрипт запускает несколько вещей, но когда он достигает этой строки
ifdown eth1
Сценарий завершается, а ifdown не запускается. (Запуск ifconfig по-прежнему показывает eth1 на выходе) Включение режима Verbose на ifdown ничего не возвращает.
Если я вручную запускаю скрипт сам, он работает как ожидалось.
Я написал тестовый скрипт, чтобы исключить любые проблемы с init.sh
#!/bin/bash
echo 'one'
ifdown eth1
echo 'two'
Если я запустил его вручную, я получу этот вывод (который ожидается)
one
<DHCP Client info>
two
Если я поставлю этот тестовый скрипт в crontab, который будет запущен с @reboot, я получаю те же результаты, что и init.sh, а выход -
one
. Я протестировал, запустив cron at точное время (Пример: 25 14 * * *), чтобы увидеть, что это что-то с `@reboot ', но не удача.
Я также попытался отложить запуск сценария после загрузки, если что-то блокировало ifdown из running
@reboot /bin/sleep 60; /bin/bash /root/init.sh >> /var/log/vminit.log
Несколько заметок: - Eth1 - активный интерфейс, перед запуском ifdown скрипт вызывает вызов eth1, чтобы захватить файл успешно. - Скрипт запускается как root. Разрешения со сценарием (и протоколом) прекрасны. - Запуск init.sh или тестовый скрипт выполняется вручную, как ожидалось.