ifdown в cron bash скрипт не запускается

У меня есть скрипт, который запускается, когда сервер (Ubuntu 14.04) загружается с помощью @reboot в crontab (Под пользователем root)

@reboot /bin/bash /root/init.sh >> /var/logs/vminit.log

Скрипт запускает несколько вещей, но когда он достигает этой линии

ifdown eth1

Скрипт завершается, а ifdown не запускается. (Запуск ifconfig по-прежнему показывает eth1 в выходных данных) Включение подробного режима на ifdown тоже ничего не возвращает.

Если я сам запускаю скрипт, он запускается, как и ожидалось.

Я написал тестовый скрипт, чтобы исключить любые проблемы с init.sh

#!/bin/bash
echo 'one'
ifdown eth1
echo 'two'

Если я запустил его вручную, я получу этот вывод (что ожидается)

one
<DHCP Client info>
two

Если я помещу этот тестовый скрипт в crontab для запуска с @reboot, я получу те же результаты, что и init.sh, и получу результат:

one

Я протестировал, запустив cron в точное время (пример: 25 14 * * *), чтобы увидеть, если что-то с `@reboot ', но не повезло.

Я также пытался задержать запуск скрипта после загрузки, если что-то блокировало запуск ifdown

@reboot /bin/sleep 60; /bin/bash /root/init.sh >> /var/log/vminit.log

Несколько замечаний: - Eth1 - активный интерфейс, до запуска ifdown скрипт делает вызов из eth1, чтобы получить файл успешно. - Сценарий запускается от имени пользователя root - Права доступа к сценарию (и журналу) в порядке. - Запуск init.sh или тестовый сценарий выполняется вручную, как и ожидалось.

2
задан 30 April 2015 в 17:09

3 ответа

На самом деле я не знаю, почему ifdown не работает с crontab.

Во всяком случае, я сталкивался с той же ситуацией давным-давно и у меня есть обходное решение, надеюсь, это поможет вам.

Заменить

ifdown eth1

на

/sbin/ifconfig eth1 down 1> /dev/null

Это сработало для меня.

0
ответ дан 30 April 2015 в 17:09

Даже если Вы используете wpa_cli в качестве задания крона, необходимо обеспечить полный путь как так:

/sbin/wpa_cli -i eth1 reconfigure
0
ответ дан 2 December 2019 в 02:22

This работало для меня, когда я использую ifup или ifdown в crons:

  1. Прежде всего, убедитесь, что ifupdown установлен:
 apt-get install ifupdown
  1. Найдите ifdown местоположение:
 which ifdown
  1. Обратитесь к ifdown с абсолютным путем:
#!/bin/bash
echo 'one'
/sbin/ifdown eth1
echo 'two'
0
ответ дан 5 April 2020 в 14:39

Другие вопросы по тегам:

Похожие вопросы: