[launchd-dev] launchd-dev Digest, Vol 27, Issue 5
Sidney San Martín
s at sidneysm.com
Fri Sep 18 10:04:29 PDT 2009
This daemon needs to check in with a server at predetermined intervals
(say, every hour). In certain situations the server may want to
instruct it to change its checkin interval. I planned to use
StartInterval to launch the daemon as needed to check in.
There's also a client application which connects to a launchd-provided
UNIX domain socket. When the client's connected, the daemon stays
running and StartInterval isn't an issue, but when the client is not
running, I see no reason not to let the daemon time out and exit until
a client tries to connect or until its next checkin.
What do you see here that's dangerous or otherwise a bad design decision?
On Thu, Sep 17, 2009 at 6:07 PM, Nehemiah Dacres <vivacarlie at gmail.com> wrote:
> That's very dangerous.
>
>>
>> How can I modify properties of a job (StartInterval, in this case)
>>
>> without un/reloading it from launchd?
>
> when I read "how do i modify x without reloading it" I see a design issue.
> Startinverval " When an agent has the StartInterval key in its .plist file,
> so that it is run every N seconds"
> from macgeekery .
>
> which is a summary of the launchd manual
>
> StartInterval <integer>
> This optional key causes the job to be started every N seconds. If the
> system is asleep, the job will
>
> be started the next time the computer wakes up. If multiple intervals
> transpire before the computer is
> woken, those events will be coalesced into one event upon wake from
> sleep.
>>
>> Ideally, I want a daemon to be
>> able to modify its own StartInterval while running, so that it applies
>> the next time the daemon idles out, and without disrupting any of its
>> launchd-provided sockets.
>>
> Idleingout, I think referes to OnDemand, because you want to control when
> the job comes back after being stopped from lack of use? This is probibly
> not necessary.
> again from the man page
>
> KeepAlive <boolean or dictionary of stuff>
> This optional key is used to control whether your job is to be kept
> continuously running or to let
>
> demand and conditions control the invocation. The default is false and
> therefore only demand will start
> the job. The value may be set to true to unconditionally keep the job
> alive. Alternatively, a dictio-nary dictionary
>
> nary of conditions may be specified to selectively control whether
> launchd keeps a job alive or not. If
> multiple keys are provided, launchd ORs them, thus providing maximum
> flexibility to the job to refine
>
> the logic and stall if necessary. If launchd finds no reason to restart
> the job, it falls back on
> demand based invocation. Jobs that exit quickly and frequently when
> configured to be kept alive will
>
> be throttled to converve system resources.
>
> SuccessfulExit <boolean>
> If true, the job will be restarted as long as the program exits
> and with an exit status of zero.
>
> If false, the job will be restarted in the inverse condition.
> This key implies that "RunAtLoad"
> is set to true, since the job needs to run at least once before
> we can get an exit status.
>
>
> NetworkState <boolean>
> If true, the job will be kept alive as long as the network is up,
> where up is defined as at least
> one non-loopback interface being up and having IPv4 or IPv6
> addresses assigned to them. If
>
> false, the job will be kept alive in the inverse condition.
>
> PathState <dictionary of booleans>
> Each key in this dictionary is a file-system path. If the value
> of the key is true, then the job
>
> will be kept alive as long as the path exists. If false, the job
> will be kept alive in the
> inverse condition. The intent of this feature is that two or more
> jobs may create semaphores in
> the file-system namespace.
>
>
> OtherJobEnabled <dictionary of booleans>
> Each key in this dictionary is the label of another job. If the
> value of the key is true, then
> this job is kept alive as long as that other job is enabled.
> Otherwise, if the value is false,
>
> then this job is kept alive as long as the other job is disabled.
> This feature should not be
> considered a substitute for the use of IPC.
>
> Tell us why you want to do that and I could probibly give you a better
> design decision.
>
>
>
>
> --
>
> "lalalalala! it's not broken because I can use it"
>
> http://linux.slashdot.org/comments.pl?sid=194281&threshold=1&commentsort=0&mode=thread&cid=15927703
>
> _______________________________________________
> launchd-dev mailing list
> launchd-dev at lists.macosforge.org
> http://lists.macosforge.org/mailman/listinfo.cgi/launchd-dev
>
>
More information about the launchd-dev
mailing list