conf/117027: rc.subr doesnt deal with perl daemons

Steven Hartland steven.hartland at multiplay.co.uk
Mon Oct 8 10:50:02 PDT 2007


>Number:         117027
>Category:       conf
>Synopsis:       rc.subr doesnt deal with perl daemons
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Mon Oct 08 17:50:01 GMT 2007
>Closed-Date:
>Last-Modified:
>Originator:     Steven Hartland
>Release:        FreeBSD 6.2-RELEASE-p7 i386
>Organization:
Multiplay
>Environment:
FreeBSD core2.multiplay.co.uk 6.2-RELEASE-p7 FreeBSD 6.2-RELEASE-p7 #1: Thu Aug 2 00:54:23 BST 2007 root at core2.multiplay.co.uk:/usr/src/sys/
i386/compile/MPUK_SMP i386
>Description:
Configuring a rc script to deal with perl daemons currently fails.

This is because the perl daemonization results in a procname of "[perl]" where as the currently the only special case tested is "the basename of the interpreter plus a colon"

Example output:
ps -o "pid,jid,command" -p 60082
  PID    JID COMMAND
60082      0 [perl]
>How-To-Repeat:
Try the mrtg daemon script:
#!/bin/sh
#
# $FreeBSD: ports/net-mgmt/mrtg/files/mrtg_daemon.sh.in,v 1.5 2006/04/23 17:39:52 oliver Exp $

#
# PROVIDE: mrtg_daemon
# REQUIRE: DAEMON bsnmpd snmpd

.  /etc/rc.subr


name="mrtg_daemon"
rcvar=`set_rcvar`

load_rc_config $name

: ${mrtg_daemon_enable="NO"}
: ${mrtg_daemon_pidfile="/var/run/mrtg/mrtg.pid"}
: ${mrtg_daemon_user="mrtg"}
: ${mrtg_daemon_group="mrtg"}
: ${mrtg_daemon_config="/usr/local/etc/mrtg/mrtg.cfg"}

: ${mrtg_daemon_flags="--pid-file $mrtg_daemon_pidfile --lock-file /var/run/mrtg/lockfile --confcache-file /var/run/mrtg/confcache --user $mrtg_daemon_user --group $mrtg_daemon_group --daemon $mrtg_daemon_config"}

start_precmd="mrtg_daemon_precmd"

command="/usr/local/bin/mrtg"
command_interpreter="/usr/local/bin/perl"
pidfile=${mrtg_daemon_pidfile}

mrtg_daemon_precmd()
{
       rm -f /var/run/mrtg/lockfile /var/run/mrtg/confcache $mrtg_daemon_pidfile
}

run_rc_command "$1"
>Fix:
The following patch fixes this behaviour by adding the test for "[perl]" to the valid options:-

--- /etc/rc.subr.orig   Mon Oct  8 18:31:34 2007
+++ /etc/rc.subr        Mon Oct  8 18:32:31 2007
@@ -271,5 +271,5 @@
                _fp_args='_argv'
                _fp_match='case "$_argv" in
-                   ${_interp}|"${_interp} "*|"${_interpbn}: ${_procname}"*)'
+                   ${_interp}|"${_interp} "*|"[${_interpbn}]"|"${_interpbn}: ${_procname}"*)'
        else                                    # a normal daemon
                _procnamebn=${_procname##*/}

Patch attached with submission follows:

--- /etc/rc.subr.orig	Mon Oct  8 18:31:34 2007
+++ /etc/rc.subr	Mon Oct  8 18:32:31 2007
@@ -271,5 +271,5 @@
 		_fp_args='_argv'
 		_fp_match='case "$_argv" in
-		    ${_interp}|"${_interp} "*|"${_interpbn}: ${_procname}"*)'
+		    ${_interp}|"${_interp} "*|"[${_interpbn}]"|"${_interpbn}: ${_procname}"*)'
 	else					# a normal daemon
 		_procnamebn=${_procname##*/}


>Release-Note:
>Audit-Trail:
>Unformatted:


More information about the freebsd-bugs mailing list