Crontab script on Mac OS X Lion does not work anymore
I'd do it the OS X way and use launchd instead of cron. You do this by writing a LaunchAgent. That's basically a .plist in the /Library/LaunchAgents or ~/Library/LaunchAgents that tell launchd what script to run and what the trigger for running the script should be.
launchd allows you to control whether the script should be run by the logged in user or by root.
Lingon.app is a nice way of getting started with and managing LaunchAgents.
The Apple Developer Connection man page might also help.
Related videos on Youtube
DrJimbo
Updated on September 18, 2022Comments
-
DrJimbo over 1 year
I have a problem with cron tasks. Previously this script worked fine on Mac OS X 10.6 server, but when I initialize it on Lion (client), this script stopped working.
Basically, this
.bat
file calls ajar
file (that invokes a loop ofmysqldump
commands) to backup several databases on several servers, and runs perfectly if launched by the shell.cd /Users/nameoftheuser/Desktop/backupper /usr/bin/java -cp .:Backupper.jar:lib/mail.jar backupper.Main "/Users/nameoftheuser/Desktop/backupper/listasiti.txt" "/Users/nameofthe/Desktop/backupper/config.properties
But if the cron launches the same
.bat
file, the generated database backups are 0 bytes.The cron entry is:
0 0 sh /Users/path/to/file.bat
I believe that the problem is that cron doesn't run as
root
. Or what else?-
slhck over 12 yearsSo what's in your script, please? We can't magically guess what works and what doesn't. If you want to run it from
root
's crontab, just see: superuser.com/questions/344398/… — also: How do you edit the crontab initially? Do you call the script from the shell usingsh …
too? -
DrJimbo over 12 yearsThe bat entry is:
cd /Users/nameoftheuser/Desktop/backupper /usr/bin/java -cp .:Backupper.jar:lib/mail.jar backupper.Main "/Users/nameoftheuser/Desktop/backupper/listasiti.txt" "/Users/nameofthe/Desktop/backupper/config.properties"
- I edited the crontab with nano, logged in terminal with the same user of where the script is stored, using tabs instead of spaces. The script launched by the shell is without sh, but even if i wrote this in the cron or not, it doesn't work. I forgot to say that I installed the Java runtime, because on Lion isn't installed within the OS. -
slhck over 12 yearsCan you check if cron itself is working? Have you edited it with
crontab -e
? -
DrJimbo over 12 yearsSure, tested it and it works, the crontab -e results list the right entry. The bat file is processed at the right time, but the backups are 0 bytes.
-