On Jun 7, 2006, at 12:06 , Michael Glaesemann wrote:
So, runit seems to work with launchd. The qpstmpd run script appears to work with the qpstmpd-forkserver. What am I missing?
Laurent Bercot on the runit mailing list helpfully provided a number of things I might check to se what's different between my shell environment (when I run sudo ./run from the terminal) and the boot environment under which the run script and qpsmtpd-forkserver run when launched via runit.
http://skarnet.org/lists/archive.cgi?2:msp:1386:mgfnpihglecpfmgnonjp
When you do "sudo ./run", the run script is executed with most of your user environment (open fds, environment variables and whatnot), modified in some way by the sudo configuration.
There's something in your service that works in a user environment and doesn't in a boot environment. I don't know qpsmtpd at all, but here are some random points: - Does your server work when stdin isn't a terminal? If not, why? - (depending on your boot configuration) Does your server work when stdin is closed? - What do kernel limits look like in your boot environment? Are there ulimit commands in log in scripts that make them less strict in user environments?
I'm going to look into these more on my own (I need to learn about fds, how to execute scripts with varying stdin and stdout, kernel limits, and ulimit commands, and how these apply to Mac OS X 10.4 :) ), but I'm posting them here in hopes that someone might have a flash of insight.
Michael Glaesemann grzm seespotcode net