launchd is roughly equivalent to cron, init.d, and xinetd all rolled into one. Use it by dropping a plist into one of these directories:
- /Library/LaunchDaemons runs as root on system startup
- /Library/LaunchAgents runs as the user on login
- ~/Library/LaunchAgents runs as the user for the specific user login
There is also /System/Library/Launch{Agents,Daemons} which is for the jobs installed by the OS. Use the directories above for any custom jobs.
List launchd jobs with
launchctl listStart:
sudo launchctl load /Library/LaunchDaemons/com.myorg.somejob.plistStop:
sudo launchctl unload /Library/LaunchDaemons/com.myorg.somejob.plist
There are many different options for jobs, see the launchd.plist man page for a complete list. A simple inetd service might look something like this:
<dict> <key>Disabled</key> <false/> <key>Label</key> <string>com.myorg.somejob</string> <key>Program</key> <string>/usr/local/sbin/somejob</string> <key>Sockets</key> <dict> <key>Listeners</key> <dict> <key>SockServiceName</key> <string>9999</string> </dict> </dict> <key>inetdCompatibility</key> <dict> <key>Wait</key> <false/> </dict> </dict>
/usr/local/sbin/somejob will be called whenever there is a connection on port 9999, and you can interact with the socket by reading and writing STDIN/STDOUT as normal for inetd.
No comments:
Post a Comment