Re: Launch kernel and packages from Mac OS's launchd utility
- To: mathgroup at smc.vnet.net
- Subject: [mg111983] Re: Launch kernel and packages from Mac OS's launchd utility
- From: Armand Tamzarian <mike.honeychurch at gmail.com>
- Date: Mon, 23 Aug 2010 02:38:54 -0400 (EDT)
- References: <i4o23m$aim$1@smc.vnet.net> <i4r499$jre$1@smc.vnet.net>
On Aug 22, 7:13 am, David Reiss <dbre... at gmail.com> wrote: > I haven't used launchd, but rather just use crontab -- this way the > approach (for the project for my consulting client) works on Linux as > well. It has worked quite well. > > Note that, if you use the -init approach rather than the -run > approach, you may encounter problems. if the code is in the init.m > file and you use -init, then the code may run before other components > of the Mathematica system are loaded; this can cause unexpected > results ( the -init approach is the one I first took, but I then went > over to the -run method after encountering such issues). So I > recommend staying with the -run approach, which ensures that the whole > system is up and running before your code is executed. > > I hope this helps... > > --Davidhttp://scientificarts.com/worklife > > On Aug 21, 4:17 am, Garapata <warsaw95... at mypacks.net> wrote: > > > This question follows up on an earlier one where I needed to find out > > how to launch the Mathematica kernel and a package from the command > > line on a Mac. > > > (See:http://groups.google.com/group/comp.soft-sys.math.mathematica/brow= se= > _...) > > > The required syntax for the command line looks something like this: > > > /Applications/Mathematica.app/Contents/MacOS/MathKernel -run "<</ > > Path.../myAutoRun.m" > > > myAutoRun.m has initialized cells that do some stuff and then quit the > > kernel. Works fine. > > > For my next step, I'd like to run the kernel and myAutoRun.m from a > > Mac's "launchd" utility and set it up to launch and run the package at > > specific intervals automatically without further human participation. > > Apple created launched to integrate a bunch of UNIX utilities like > > cron. > > Ostensibly, one can use it to launch daemons, process, and programs > > from a launchd "property list", basically an XML file that the system > > runs at startup. > > So, following Apple's documentation something like this ought to work: > > > <?xml version="1.0" encoding="UTF-8"?> > > <!DOCTYPE plist PUBLIC -//Apple Computer//DTD PLIST 1.0//EN > > http://www.apple.com/DTDs/PropertyList-1.0.dtd> > > <plist version="1.0"> > > <dict> > > <key>Label</key> > > <string>myAutoRun test</string> > > <key>Program</key> > > <string>//Applications/Mathematica.app/Contents/MacOS/MathKernel</ > > string> > > <key>ProgramArguments</key> > > <array> > > <string>MathKernel</string> > > <string> -run </string> > > <string> "<</path/myAutoRun.m"</string> > > </array> > > <key>StartIntervall</key> > > <integer>3600</integer> > > </dict> > > </plist> > > > The stuff between <dict> and </dict> does the specific work. > > The section: > > <key>ProgramArguments</key> > > <array> > > <string>MathKernel</string> > > <string> -run </string> > > <string> "<</path/myAutoRun.m"</string> > > </array> > > > identifies what to run (apparently, with launchd one can't put the > > entire command on a single line like you can from a cmd prompt, hence > > the array). > > > and finally the StartInterval section should launch the kernel and run > > the package every 3600 seconds (each hour) > > > Looks good in theory, but it seems launchd doesn't know what to do > > with the Mathematica command: > > > <string> "<</path/myAutoRun.m"</string> > > > following the -run option. > > > I've started trying to use: > > > -initfile " file" > > > which the documentation mentions, but doesn't discuss in detail (that > > I've found). I think it should "execute the commands in the > > initialization file, ' file' during startup". > > > Sorry for the long winded explanation. > > > Now, a number of questions. > > > Can I get launchd to launch the kernel and run the package? > > How do I do it? > > Does a better approach exist? > > > If anyone can offer general insight or guidelines for auto running > > packages and the issues involved, that would help a lot. > > > Thanks to all. > > > G I have always had the command line launch included as part of an apple script. In part this is because I sometimes also run non-Mathematica applications that are scriptable and combine everything into one applescript that then gets launched by launchd. A shell script as described by Nate should also work fine. I'd recommend using Lingon to set all this up rather than try and configure the XML directly. http://library.wolfram.com/infocenter/MathSource/7590/ Mike