Запуск 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.
Скрипт можно без проблем запустить из командной строки.
Теоретически задание cron выполняется до того, как было выполнено монтирование.
Вопросы.
Вы можете использовать точка крепления перед выполнением команды, чтобы убедиться, что монтирование выполнено, например (при условии, что / abs - это точка монтирования)
#!/bin/bash
while true
do
if mountpoint -q /abs
then
/usr/bin/python /abs/path/to/script.py
break
fi
sleep 10
done
Я не уверен, в чем проблема, поскольку 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:
echo -n $"Starting NFS mountd: "
daemon rpc.mountd $RPCMOUNTDOPTS
RETVAL=$?
echo
[ $RETVAL -ne 0 ] && exit $RETVAL || python /abs/path/to/script.py
Чтобы быть абсолютно уверенным, что скрипт python может работать. Вам нужно будет обернуть его в сценарий, хранящийся в локальном хранилище, чтобы убедиться, что точка монтирования появилась.
Что-то вроде (предупреждающий псевдокод):
while (!ScriptExists && ErrorCount < 10)
do
mount /my/mount/point
sleep 10
ErrorCount++
done