Crontab script on Mac OS X Lion does not work anymore

7,483

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.

Share:
7,483

Related videos on Youtube

DrJimbo
Author by

DrJimbo

Updated on September 18, 2022

Comments

  • DrJimbo
    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 a jar file (that invokes a loop of mysqldump 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
      slhck over 12 years
      So 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 using sh … too?
    • DrJimbo
      DrJimbo over 12 years
      The 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
      slhck over 12 years
      Can you check if cron itself is working? Have you edited it with crontab -e?
    • DrJimbo
      DrJimbo over 12 years
      Sure, 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.