Hi all! I've been looking around the net to see if I can find a solution, but to no avail, so I'm writing this in the hope that somebody can shed some light or point me in the right direction.
I'm trying to write a SMF manifest for a DDNS client (inadyn), but for some reason, svc.startd fails to notice that the daemon has started, and I have no clue how to tell it which process it is or find out what is going wrong. Let's start with the failure I have: -bash-3.00$ svcs -xv inadyn svc:/network/ddns/client:inadyn (Dynamic DNS client) State: maintenance since Mon Nov 13 12:07:39 2006 Reason: Restarting too quickly. See: http://sun.com/msg/SMF-8000-L5 See: man -M /usr/local/man -s 8 inadyn See: /var/svc/log/network-ddns-client:inadyn.log Impact: This service is not running. and in the tail of the log, there is: -bash-3.00$ tail -20 /var/svc/log/network-ddns-client\:inadyn.log [ Nov 13 19:14:11 Executing start method ("/usr/local/lib/svc/method/inadyn-client start") ] 'inadyn' is already running [ Nov 13 19:14:12 Method "start" exited with status 0 ] [ Nov 13 19:14:12 Stopping because all processes in service exited. ] [ Nov 13 19:14:12 Executing stop method (:kill) ] [ Nov 13 19:14:13 Executing start method ("/usr/local/lib/svc/method/inadyn-client start") ] 'inadyn' is already running [ Nov 13 19:14:14 Method "start" exited with status 0 ] [ Nov 13 19:14:14 Stopping because service disabled. ] [ Nov 13 19:14:14 Executing stop method (:kill) ] The manifest is attached, but the start method is: <exec_method type='method' name='start' exec='/usr/local/lib/svc/method/inadyn-client %m' timeout_seconds='300'> <method_context> <method_credential user="root" group="root"/> </method_context> </exec_method> which uses the inadyn-client script (that I wrote), containing the following lines (code edited): #!/sbin/sh . /lib/svc/share/smf_include.sh NAME=inadyn DAEMON=/usr/local/bin/$NAME . . . case $1 in start) if [ ! -x $DAEMON ]; then echo "$DAEMON is not executable, not starting" exit $SMF_EXIT_ERR_CONFIG fi if [ ! -r $CONF ]; then echo "$CONF not readable, not starting" exit $SMF_EXIT_ERR_CONFIG fi if pgrep $NAME >/dev/null; then echo "'$NAME' is already running" else $DAEMON & sleep 1 fi ;; . . . esac exit $SMF_EXIT_OK When I call the 'inadyn-client' script directly, the daemon starts well and keeps going without a glitch, but when svc.startd tries to start it, it decides somehow that "all processes in the service exited". AFAICT, this is not the case. So, the questions are: - How do svc.startd decide if a process is in the service? - Is there a way to find out what is going wrong? Best wishes, Mats Kindahl -- Mats Kindahl Replication Team MySQL AB, www.mysql.com -------------- next part -------------- A non-text attachment was scrubbed... Name: mats.vcf Type: text/x-vcard Size: 199 bytes Desc: not available URL: <http://mail.opensolaris.org/pipermail/smf-discuss/attachments/20061113/d8887677/attachment.vcf>