运行Cronjob @reboot返回nfs共享上的文件不存在。
例
@reboot python /abs/path/to/script.py
启动时从crontab发来的邮件读取“或多或less”
/usr/bin/python can't open file "/abs/path/to/script.py": [Error No. 2] No such file or folder.
脚本可以从命令行运行,没有问题
理论上说,在mount已经运行之前,cronjob正在运行。
问题。
您可以使用mountpoint命令确保在执行命令之前进行挂载,例如(假设/ 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从networking开始后出现了什么问题。 (至less在Red Hat和衍生产品中)。你是用/etc/fstab _netdev选项挂载在/etc/fstab还是在哪里?
启动时执行的标准方法是将其包含在/etc/rc.local 。 这将在networking初始化和所有其他服务启动后运行。 (包括安装远程文件系统。)
(还是有一个理由,只是在文字重新启动后执行脚本?)
以下是您的一些想法:
检查NFS是否被挂载。 如果没有,挂载它,然后运行你的脚本:
[ ! -f /abs/path/to/script.py ] && mount -t nfs device dir && python /abs/path/to/script.py
在NFS init脚本的start()函数中运行脚本:
echo -n $"Starting NFS mountd: " daemon rpc.mountd $RPCMOUNTDOPTS RETVAL=$? echo [ $RETVAL -ne 0 ] && exit $RETVAL || python /abs/path/to/script.py
要绝对确定python脚本能够运行。 您需要将其包装在存储在本地存储上的脚本中,以validation安装点已经启动。
像(警告伪代码):
while (!ScriptExists && ErrorCount < 10) do mount /my/mount/point sleep 10 ErrorCount++ done