Bash Script Runs Manually, But Fails On Crontab
Answer : The problem is probably that your $PATH is different in the manual environment from that under which crontab runs. Hence, which can't find your executables. To fix this, first print your path in the manual environment ( echo $PATH ), and then manually set up PATH at the top of the script you run in crontab. Or just refer to the programs by their full path. Edit: Add this near the top of your script, before all the which calls: export PATH="/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/mysql/bin:/opt/android-sdk-linux/tools:/opt/android-sdk-linux/platform-tools:~/usr/lib/jvm/jdk-6/bin" Another more generic way is to have cron run the user's bash logon process. In addition to the PATH, this will also pick up any LD_LIBRARY_PATH, LANG settings, other environment variables, etc. To do this, code your crontab entry like: 34 12 * * * bash -l /home/db-backup/mysqlbackup.sh My Issue was ...