Running Cronjob @reboot returns that file on nfs share does not exist.
Example
@reboot python /abs/path/to/script.py
mail from crontab on startup reads "more or less"
/usr/bin/python can't open file "/abs/path/to/script.py": [Error No. 2] No such file or folder.
Script can be run from the command line with no trouble..
Theory is that the cronjob is running before mount has been run.
The questions.
- Is this theory correct?
- Is there a way to force the job to wail until the drive has been mounted? .... Other than just putting in a sleep 60 into the command. ;) I tried that already, but it's hit and miss and I need the script to run 100% of the time quickly.
You can use the mountpoint command to ensure the mount has taken place before you execute your command e.g. (assuming /abs is the mount point)
I'm not sure what the problem is since cron starts after networking. (At least in Red Hat and derivatives.) Are your mounts in
/etc/fstab
with_netdev
option or else where?The standard way to execute something on start up is to include it in
/etc/rc.local
. This will be ran after the network is initialized and all other services are started. (Including mounting of remote file systems.)(Or is there a reason to only execute the script after a literal reboot?)
Here are some ideas for you:
check if NFS is mounted. If not, mount it, then run your script:
[ ! -f /abs/path/to/script.py ] && mount -t nfs device dir && python /abs/path/to/script.py
run your script in the
start()
function of the NFS init script:To be absolutely sure that the python script is able to run. You would need to wrap it in a script stored on local storage to verify that the mount point has come up.
Something like (warning pseudo code):