Scheduling a terminal command or script file to run daily at a specific time Mac OS X

Naboo picture Naboo · Apr 26, 2016 · Viewed 32.8k times · Source

I want to have my computer set its volume to a specific level every night at 11:45 PM. I'm running OSX 10.11.4. I can set the volume manually through terminal with

osascript -e "set Volume 1.7"

or as a script with

set volume 1.7

I want it to be scheduled nightly though. It's hard to find anything online that isn't super outdated. I don't really want to use iCal. From what I've found online, launchd is the way to go, but as a noob, I don't know where to start.

I see things about using a .plist in /Library/LaunchAgents. So I found a nifty plist generator Launched.zerowidth.com but what kind of code do I put in the plist to get the desired effect? I'm also questioning if this is the correct path for this to execute if any user is logged on.

Am I going down the wrong path here? I'm open to any ideas to make this happen, but I don't want to use a 3rd party app that I have to keep open all the time.

Thanks,

Naboo

Answer

retgoat picture retgoat · Apr 26, 2016

Please consider using the cron daemon. It is present in osx by default.

Create script for volume adjusting

#!/bin/bash -l
/usr/bin/osascript -e "set Volume 1.7"

Then add new line to crontab.

crontab -e

By default, it will open in the vi(m) editor. But you can adjust the default editor with

export EDITOR=/path/to/your/awesome/editor

Then add new string to crontab

0 20 * * * /path/to/volume/script.sh

The given command will run every day at 8 pm.

Please find more crontab examples here: https://en.wikipedia.org/wiki/Cron