Вопрос Запуск команды при запуске на crontab


Я хотел запустить команду в нашем Linux после ее перезагрузки, я увидел, что это можно сделать с помощью crontab. Я хотел запустить эту команду

sudo ifdown eth0 && sudo ifup -v eth0

на crontab я могу просто сделать:

@reboot sudo ifdown eth0 && sudo ifup -v eth0

или мне нужно сохранить это в скрипте?

Спасибо


18
2018-02-17 21:08


происхождения


Crontab кажется неправильным инструментом для перезапуска eth0. Почему бы не поместить эту команду (без sudo) в /etc/rc.local? - mikewhatever
Для чего вам это нужно? Эти задачи обычно выполняются автоматически во время процесса загрузки, и почти НИКОГДА необходимо запускать отдельно от автоматизированных процессов загрузки ... - Thomas Ward♦
@mikewhatever я не могу продвинуться в данный момент, но просто хочу поблагодарить вас за это. - Lottie


ответы:


Несколько заметок здесь до этого будут работать:

  1. Не использовать sudo в работе cron. Вместо этого редактируйте rootcrontab вместо вашего собственного, например. sudo crontab -e а затем введите команды без sudo,
  2. Как @mikewhatever упомянул, это странное использование для cron, и, вероятно, будет лучше /etc/rc.local перед exit 0 линия.
  3. Если вы скажете нам, что именно вы ищете, мы можем перенаправить вас к параметру журнала или конфигурации (перезапуск сетевых сервисов при запуске кажется немного хакерским).
  4. В большинстве систем @reboot должен также запускаться после жесткого выключения или сбоя, но существуют различные реализации cron, поэтому YMMV. Я видел комментарии в разных местах, утверждая оба.

РЕДАКТИРОВАТЬ (2016/02/17): Удалено неверное отображение по абсолютным путям; kudos @muru
РЕДАКТИРОВАТЬ (2016/10/17): добавлено примечание о завершении работы
РЕДАКТИРОВАТЬ (2017/09/11): пересмотренное примечание о закрытии. Не совсем уверен в этом.


27
2018-02-17 21:14



ok просто хочу уточнить, я должен просто написать полную команду на etc/rc.local без судо. так что тогда будет просто ifdown eth0 && sudo ifup -v eth0 exit 0 - Lottie
cron использует PATH приведены в /etc/environment, который имеет /sbin, - muru
Я сделал то, что предложил, и это сработало. Спасибо - Lottie
Должно быть, @ TheSchwa. По крайней мере с 12 апреля, /etc/pam.d/cron грузы pam_env, так /etc/environment следует прочитать и по умолчанию PATH установлен в б / у. Этот ответ был опубликован только до 12.04. - muru
@TheSchwa Утверждение, что перезагрузка cron не запускается при холодной загрузке, неверна. Линии с перезагрузкой запускаются, когда запускается демон crond, period. Это то, что это теплый ботинок, холодный ботинок или не было никакой загрузки, и я просто ручно закрыл crond и начал его снова. Демон crond не знает и не заботится о том, почему он перезапускается, он просто запускает строки перезагрузки всякий раз, когда это происходит. - Kurt Fitzner


Вы можете использовать crontab для этого, но если вы используете sudo, то вам понадобится NOPASSWD правило в sudoers для этого. (Видеть Как запустить задание cron с помощью команды sudo.)

Было бы проще редактировать /etc/rc.local и добавьте эти команды до exit 0 линия.


5
2018-02-17 21:13