0

I want to schedule events for exact times in Mac OS X. It seems like the 'at' command is the simplest way to do this.

I have enabled atrun using the command:

launchctl load -w /System/Library/LaunchDaemons/com.apple.atrun.plist

To test at, I'm using the following one-line BASH script:

echo 'foo' >> path/to/log.txt | at now + 2 minutes

When I run the script, I get output like:

job 17 at Sat May 15 12:57:00 2010

where '12:57:00' is indeed 2 minutes in the future. But the echo command executes immediately: the line 'foo' is added to log.txt right away.

How can I make at work for me?

Gabe
  • 731

1 Answers1

0

You're doing it wrong. at reads commands from stdin as text, it cannot magically know them from a pipeline.

Your command...

echo 'foo' >> path/to/log.txt | at now + 2 minutes

...runs both echo and at at the same time, in a pipeline. (Think cat somefile | grep sometext) So at would receive the word foo on its stdin. However, the output of echo is redirected to a file, so at does not receive anything.


The correct command would be:

echo "echo 'foo' >> path/to/log.txt" | at now + 2 minutes
grawity
  • 501,077