Запуск Cronjob @reboot возвращает, что файл на общем ресурсе nfs не существует.
пример
@reboot python /abs/path/to/script.py
почта из crontab при запуске читает "более или менее"
/usr/bin/python can't open file "/abs/path/to/script.py": [Error No. 2] No such file or folder.
Скрипт может быть запущен из командной строки без проблем.
Теория заключается в том, что cronjob запускается до запуска mount.
Вопросы.
- Эта теория верна?
- Есть ли способ заставить работу плакать, пока диск не будет смонтирован? .... За исключением простого сна 60 в команду. ;) Я уже пробовал это, но это попало, и мне нужно, чтобы скрипт работал 100% времени быстро.
Ответы:
Вы можете использовать команду mountpoint, чтобы убедиться, что монтирование было выполнено до выполнения вашей команды, например (при условии, что / abs является точкой монтирования)
источник
mountpoint
- это очень полезно!Я не уверен, в чем проблема, поскольку cron запускается после работы в сети. (По крайней мере, в Red Hat и ее производных.) Ваши монтирует
/etc/fstab
с_netdev
опцией или еще где?Стандартный способ выполнения чего-либо при запуске состоит в том, чтобы включить это в
/etc/rc.local
. Это будет выполнено после инициализации сети и запуска всех других служб. (Включая монтирование удаленных файловых систем.)(Или есть причина выполнять скрипт только после буквальной перезагрузки?)
источник
Вот несколько идей для вас:
проверьте, смонтирован ли NFS. Если нет, смонтируйте его, затем запустите ваш скрипт:
[ ! -f /abs/path/to/script.py ] && mount -t nfs device dir && python /abs/path/to/script.py
запустите ваш скрипт в
start()
функции сценария инициализации NFS:источник
Чтобы быть абсолютно уверенным, что скрипт python способен работать. Вам нужно будет обернуть его в сценарий, хранящийся в локальном хранилище, чтобы убедиться, что точка монтирования подошла.
Что-то вроде (предупреждающий псевдокод):
источник