Launching a process on demand?
Hi, I'm attempting to configure the MySQL launchd plist file to launch MySQL process only when needed. At this time, it's launched at boot/startup and it stays alive. At this time, the script looks as follows: BEGIN org.macports.mysql5.plist: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" " http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Debug</key> <false/> <key>Label</key> <string>org.macports.mysql5</string> <key>OnDemand</key> <false/> <key>ProgramArguments</key> <array> <string>/opt/local/bin/daemondo</string> <string>--label=mysql5</string> <string>--start-cmd</string> <string>/opt/local/etc/LaunchDaemons/org.macports.mysql5/mysql5.wrapper</string> <string>start</string> <string>;</string> <string>--stop-cmd</string> <string>/opt/local/etc/LaunchDaemons/org.macports.mysql5/mysql5.wrapper</string> <string>stop</string> <string>;</string> <string>--restart-cmd</string> <string>/opt/local/etc/LaunchDaemons/org.macports.mysql5/mysql5.wrapper</string> <string>restart</string> <string>;</string> <string>--pid=none</string> </array> <key>RunAtLoad</key> <false/> </dict> </plist> END org.macports.mysql5.plist: I changed the above key/value pair to OnDemand/true. Now, the process doesn't start when I try to access it by doing the following:
mysql5 <RETURN>
Is there a manual which clearly describes these key/value pairs? I guess I'm interested in the key/value pair, OnDemand, and when/how it works. -Conrad
AFAIK, the most thorough documentation you'll find is 'man launchd.plist'.
On Jul 6, 2009, at 10:11 PM, Conrad Taylor wrote:
Hi, I'm attempting to configure the MySQL launchd plist file to launch MySQL process only when needed. At this time, it's launched at boot/startup and it stays alive. At this time, the script looks as follows:
BEGIN org.macports.mysql5.plist:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd "> <plist version="1.0"> <dict> <key>Debug</key> <false/> <key>Label</key> <string>org.macports.mysql5</string> <key>OnDemand</key> <false/> <key>ProgramArguments</key> <array> <string>/opt/local/bin/daemondo</string> <string>--label=mysql5</string> <string>--start-cmd</string> <string>/opt/local/etc/LaunchDaemons/org.macports.mysql5/ mysql5.wrapper</string> <string>start</string> <string>;</string> <string>--stop-cmd</string> <string>/opt/local/etc/LaunchDaemons/org.macports.mysql5/ mysql5.wrapper</string> <string>stop</string> <string>;</string> <string>--restart-cmd</string> <string>/opt/local/etc/LaunchDaemons/org.macports.mysql5/ mysql5.wrapper</string> <string>restart</string> <string>;</string> <string>--pid=none</string> </array> <key>RunAtLoad</key> <false/> </dict> </plist>
END org.macports.mysql5.plist:
When you start inserting semi-colons into your ProgramArguments, it's time to wrap it all up in a simple shell script.
I changed the above key/value pair to OnDemand/true. Now, the process doesn't start when I try to access it by doing the following:
OnDemand is deprecated. If you want the job launched on-demand, you can define a Sockets dictionary or a MachServices dictionary. Though since you're dealing with MySQL, I'm guessing you want the former. To see an example of a job that's launched on-demand when there is a connection to a socket, check out the SampleD example and BetterAuthorizationSample.
Is there a manual which clearly describes these key/value pairs? I guess I'm interested in the key/value pair, OnDemand, and when/how it works.
launchd.plist(5) -- Damien Sorresso BSD Engineering Apple Inc.
On Mon, Jul 6, 2009 at 11:45 PM, Damien Sorresso <dsorresso@apple.com>wrote:
On Jul 6, 2009, at 10:11 PM, Conrad Taylor wrote:
Hi, I'm attempting to configure the MySQL launchd plist file to launch MySQL process only when needed. At this time, it's launched at boot/startup and it stays alive. At this time, the script looks as follows:
BEGIN org.macports.mysql5.plist:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" " http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Debug</key> <false/> <key>Label</key> <string>org.macports.mysql5</string> <key>OnDemand</key> <false/> <key>ProgramArguments</key> <array> <string>/opt/local/bin/daemondo</string> <string>--label=mysql5</string> <string>--start-cmd</string>
<string>/opt/local/etc/LaunchDaemons/org.macports.mysql5/mysql5.wrapper</string> <string>start</string> <string>;</string> <string>--stop-cmd</string>
<string>/opt/local/etc/LaunchDaemons/org.macports.mysql5/mysql5.wrapper</string> <string>stop</string> <string>;</string> <string>--restart-cmd</string>
<string>/opt/local/etc/LaunchDaemons/org.macports.mysql5/mysql5.wrapper</string> <string>restart</string> <string>;</string> <string>--pid=none</string> </array> <key>RunAtLoad</key> <false/> </dict> </plist>
END org.macports.mysql5.plist:
When you start inserting semi-colons into your ProgramArguments, it's time to wrap it all up in a simple shell script.
I changed the above key/value pair to OnDemand/true. Now, the process
doesn't start when I try to access it by doing the following:
OnDemand is deprecated. If you want the job launched on-demand, you can define a Sockets dictionary or a MachServices dictionary. Though since you're dealing with MySQL, I'm guessing you want the former. To see an example of a job that's launched on-demand when there is a connection to a socket, check out the SampleD example and BetterAuthorizationSample.
Is there a manual which clearly describes these key/value pairs? I guess
I'm interested in the key/value pair, OnDemand, and when/how it works.
launchd.plist(5) -- Damien Sorresso BSD Engineering Apple Inc.
Yes, I read that OnDemand switch to KeepAlive in Mac OS 10.5. Also, the above is the default plist MySQL port which is wrapped in a script called mysql5.wrapper. In any case, I'll take a look at the samples and thanks for the information. -Conrad
participants (3)
-
Conrad Taylor
-
Damien Sorresso
-
Dave Keck