Re: Crontab v. Applescript & Command Line
Re: Crontab v. Applescript & Command Line
- Subject: Re: Crontab v. Applescript & Command Line
- From: Christopher Nebel <email@hidden>
- Date: Tue, 13 Nov 2001 10:11:32 -0800
On Monday, November 12, 2001, at 09:54 PM, Gary Beberman wrote:
I am trying to make a script run automatically in OS X 10.1 using
crontab. Whenever I do, the script starts. And I immediately get an
error dialog telling me:
"Application isn't running"
The strange thing is that the application is running. Even this simple
script trips
tell application "Finder"
open file "OS X:Users:Shared:somefile"
end tell
And the stranger thing is that I can run the script from within
Terminal just fine. If, from the comand line, I call the script the
same way I call it in crontab, it runs perfectly.
What's different in crontab? What can I do about it to get my
Applescripts to run?
You're seeing a security "feature." It has to do with Mach messages,
which form the guts of Apple Events on Mac OS X. For security reasons,
processes in Mach are segregated into "process groups", and a process in
one group is not allowed to send messages to a process in a different
group. Because cron gets launched at boot time, it's in root's process
group, while every application launched by your login (including the
Finder) is in your process group. Therefore, a script run by cron can't
talk to any application that you launched.
There's something of a bug in AppleScript here, too -- at its level, it
can see the application, so it tells the Apple Event Manager to send it
a message, and you get a surprising error.
It's not clear what the truly correct solution is here -- there are
valid security reasons for keeping the process group restrictions in
place. In the meantime, what can you do? Well, scripting additions
should still work, so you can use those. cron unfortunately makes sure
that only one instance of cron is ever running at once, so you can't
launch your own personal cron, though if you're feeling extra studly,
you could get the source for cron (it is open, after all) and modify it
appropriately.
--Chris Nebel
AppleScript Engineering