Hi, I'm new to the implementation of SMF so hopefully this is not an RTFM type of question ...
I'm trying to implement SMF for a process that forks and kills sub-processes in its (hopefully long!) lifetime. I desire that SMF monitor the parent process but disregard the children's coming's and going's (and potentially signal activity). So, while failure of the parent would stimulate SMF to re-start the service, failure of any children would be left to the parent to attend to. Now, after doing a bunch of searches here and elsewhere I became aware of an example httpd config (httpd has similar behavior) which included the following: < property_group name='startd' type='framework' > < ! -- sub-process core dumps shouldn't restart session -- > < propval name='ignore_error' type='astring' value='core,signal' / > < / property_group > Initially I thought that this was the "magic bullet". However, this results in *all* of the processes being ignored, not just the children of the parent. IE Killing the parent, controlling process, elicits no response from SMF. Now, if I go ahead and kill off the child as well, since the critical event set includes 'hwerr' and 'empty', SMF will ultimately restart my parent app as desired. However, unless all children are killed, SMF does not recognize that the parent has moved on to a better computer :-) I foresee a couple of suggestions: 1) Create separate service entries for the children (possibly using ctrun) The parent is a binary. It forks and changes behavior (again like httpd) So I don't really have the option to break them out with separate method script invocations etc. 2) Have the parent process place the children in a separate contract from the parent process (and the other related processes) using the API libcontract(3LIB) and then ignore the contract. This is what I suspect I need to do although I'm hoping that there is an RTFM type XML solution here. I'd endure the embarrassment to save the development time :-) I figure I could use the code from ctrun and ctwatch to learn from... To be honest, if someone who is experienced enough to tell me definitively that I need to actually code as (2) above to solve this would do so, that'd be great. That is what I'm thinking is necessary, but I've got this nagging fear I'm about to embark on a time wasting voyage to no-where and that there is a much easier way to get the result I desire... cheers Mac This message posted from opensolaris.org