Solaris SMF: Kill with custom signal, or get PID, or prevent kill of children

smfsolarissolaris-10

In the Solaris Service XML

I am using a kill to signal a graceful shutdown

<exec_method type="method" name="stop" exec=":kill" timeout_seconds="60" />

This works great, except for the fact that it also kills the child processes, which mostly just die after a SIGTERM. Any of these will work

  • Get the PID so I can use exec="kill -SIGUSR1 $PID"
  • Prevent SIGTERM from being sent to the children. (or at least not the grandchildren)
  • Use some other signal

I would prefer not to set up a separate script that has to go figure out the pid. I will do this if I have to. I would prefer to get it from an environment variable, or use a SMF built in command.

Best Answer

exec=":kill -USR1" does the trick. Without SIG.

I was looking for this when defining method="refresh". jperkin set me straight with his example of exec=":kill -HUP", whereas on SmartOS using exec=":kill -SIGHUP" resulted in "/sbin/sh[1]: exec: :kill: not found".