/home/myname/bin/script:
#!/bin/bash
ifconfig > /home/myname/foo
Crontab:
* * * * * /home/myname/bin/script
...waits 1 minute...
@@ 11:35:51 [myname@comp - ~]$ ls foo
-rw-r--r-- 1 myname myname 0 Jul 7 11:35 foo
@@ 11:35:55 [myname@comp - ~]$
I can't figure out why foo would end up empty. Running the ifconfig command on the command line works exactly as you'd expect, dumping its output into a file just like normal. For reference, I'm running Ubuntu 8.04.
try using the full path to the
ifconfig
executable in your script.which ifconfig
will give you the path.I don't know what
ipconfig
does in ubuntu. :)In a cron job you probably want to redirect both stdout and stderr to the file. Change your script to this:
and you'll see the error message in your output file.
See All About Redirection in the Bash Programming How To for more info.
crontab does not use user path variable.
You have to place command with full path to it. i.e.
/sbin/ifconfig
. Then this will be working.Other way to solve this problem is to add PATH variable to your script and export it then your script will be able to use standard commands with out adding full path every time. You can check path typing
echo $PATH
in terminal.have you tried manually running your script?
cd in to /home/myname/bin/
./script
does it make the foo with contents as expected?
is the script executable?
I know that might sound like simple things but sometimes that is what is overlooked, especially when I make a script