• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: Crontab v. Applescript & Command Line
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Crontab v. Applescript & Command Line


  • Subject: Re: Crontab v. Applescript & Command Line
  • From: Gary Beberman <email@hidden>
  • Date: Tue, 13 Nov 2001 15:04:15 -0800

If I have it right, these are my options:

1) Find a different timer to trigger this, one which can run under my ID.

2) Always work under root.

3) Find a way to kill the cron processes and restart them under my ID.

4) Try to change the crontab code (a real disaster if I do it).

Right?

Gary

At 10:11 AM -0800 11/13/01, Christopher Nebel wrote:
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


References: 
 >Re: Crontab v. Applescript & Command Line (From: Christopher Nebel <email@hidden>)

  • Prev by Date: Newbie to Applescript
  • Next by Date: Re: using tell with proc. serial numb. in OS X
  • Previous by thread: Re: Crontab v. Applescript & Command Line
  • Next by thread: Re: Crontab v. Applescript & Command Line
  • Index(es):
    • Date
    • Thread