Super User is a question and answer site for computer enthusiasts and power users. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I'd like to have a simple bash script run (regardless of whether anyone is logged in or not) akin to putting it in /etc/cron.daily/ on Linux, but on Mac OS X Mountain Lion 10.8.4. If it's possible, how? All it needs to do is copy (and maybe bzip) a file.

share|improve this question
cron should run without being logged in. cron works the same way anywhere. – Journeyman Geek Aug 16 '13 at 15:35
Try a crontab -e. Create a job to touch a file in in a few minutes. Log out. Wait those minutes. Check if the file has been created. (Optionally: remove the now useless cron job :) ) – Hennes Aug 16 '13 at 15:39
you don't have to be logged in but the computer does need to be in the active mode, meaning not closed – amphibient Aug 16 '13 at 15:54

Using cron, you can edit the superuser's crontab with for example EDITOR=nano sudo crontab -e. When I tried adding a line like * * * * * say aa, the say command was run even after I logged out to the login window.

Using launchd, save a property list like this as for example /Library/LaunchAgents/test.plist:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
<plist version="1.0">

Then run sudo chown root /Library/LaunchAgents/test.plist and sudo launchctl load /Library/LaunchAgents/test.plist. The say command scheduled by launchd was also run when I logged out to the login window.

share|improve this answer
If I set the script to run while I'm logged in, it seems to work, but not when I'm logged out. Also, I can't find any entry in the log for it to see what went wrong. – Lido Aug 30 '13 at 9:48
Both methods worked for me when I tried logging out to the login window. If you mean the cron log, you can enable logging by editing com.vix.cron.plist. If you mean launchd, you can save the stderr or stdout of the program to a log file by adding a StandardErrorPath or StandardOutPath key. See man launchd.plist. – user495470 Aug 30 '13 at 10:33

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .