Solved Cronjobs are not really working

Hello guys,

at first i am new with freebsd so please be kind :)

I made a small script to backup some mysql databases.
Its something like:
Code:
#!/bin/sh
cd /root/backup
mysqldump -uroot -p'somecoolstuff' database1 > database_1.sql
mysqldump -uroot -p'somecoolstuff' database2 > database_2.sql
mysqldump -uroot -p'somecoolstuff' database3 > database_3.sql
mysqldump -uroot -p'somecoolstuff' database4 > database_4.sql
mysqldump -uroot -p'somecoolstuff' database5 > database_5.sql

tar cfvz datenbank`date +%d-%m-%y_%H:%M`.tar.gz database_*.sql
rm -rf database_*.sql

If i execute the shell script without a cronjob, everything is working fine.

Thats how i made the cronjob:
Code:
nano /etc/crontab
0      *       *       *       *       root    /root/backup/backupDatenbank.sh


The cronjob is executin, that tar.gz file is there. But all the databases have 0 Byte.

Any ideas? Would be rly cool!


Greets
Paul01


Excuse my English hehe
 
Standard new user problem #1. Gets asked on here at least once a month.

Cron will only look in /etc:/bin:/sbin:/usr/bin:/usr/sbin by default for programs. mysqldump is in /usr/local/bin.
You could change the PATH variable in /etc/crontab, but the proper way to fix it is to just put the full path to mysqldump in your script.
 
Code:
#!/bin/sh
cd /usr/local/bin
mysqldump -uroot -p'somecoolstuff' database1 > database_1.sql
mysqldump -uroot -p'somecoolstuff' database2 > database_2.sql
mysqldump -uroot -p'somecoolstuff' database3 > database_3.sql
mysqldump -uroot -p'somecoolstuff' database4 > database_4.sql
mysqldump -uroot -p'somecoolstuff' database5 > database_5.sql

tar cfvz datenbank`date +%d-%m-%y_%H:%M`.tar.gz database_*.sql
rm -rf database_*.sql

Like dis?
 
@qetopt and then
Code:
0      *       *       *       *       root    /root/backup/backupDatenbank.sh
?

And the script like:
Code:
#!/bin/sh
cd /usr/local/bin
mysqldump -uroot -p'somecoolstuff' database1 > database_1.sql
mysqldump -uroot -p'somecoolstuff' database2 > database_2.sql
mysqldump -uroot -p'somecoolstuff' database3 > database_3.sql
mysqldump -uroot -p'somecoolstuff' database4 > database_4.sql
mysqldump -uroot -p'somecoolstuff' database5 > database_5.sql

tar cfvz datenbank`date +%d-%m-%y_%H:%M`.tar.gz database_*.sql
rm -rf database_*.sql
 
That will end up leaving the database dumps in the /usr/local/bin directory (probably what you do not want).
I'd do this:
Code:
#!/bin/sh
cd /directory/where/db/dumps/go
/usr/local/bin/mysqldump -uroot -p'somecoolstuff' database1 > database_1.sql
/usr/local/bin/mysqldump -uroot -p'somecoolstuff' database2 > database_2.sql
/usr/local/bin/mysqldump -uroot -p'somecoolstuff' database3 > database_3.sql
/usr/local/bin/mysqldump -uroot -p'somecoolstuff' database4 > database_4.sql
/usr/local/bin/mysqldump -uroot -p'somecoolstuff' database5 > database_5.sql

tar cfvz datenbank`date +%d-%m-%y_%H:%M`.tar.gz database_*.sql
rm -rf database_*.sql
 
To add a little up to the previous posts...

You can find out about this by checking the cron config file(s). For example; /etc/crontab will show you the exact path which usdmatt mentioned above. If you need more access you could consider adding /usr/local/bin, although I'd personally change an individual crontab instead.

Code:
## My example crontab, I'm going to be using executables from /usr/bin and /usr/local/sbin, so...

PATH=/usr/bin:/usr/local/sbin

[stuff to do here]
Also: cron always sends an e-mail when something produces output. Check the e-mail on your server (it probably went to the root account; look into /var/mail/root). I'm pretty sure you have some telling you about 'command not found' errors.
 
Back
Top