Strange behaviour of my script within /etc/rc.d

Peter van Swieten swieten at itsef.com
Tue May 24 05:04:42 PDT 2005


Hi,

While trying to get my script within the /etc/rc.d tree operational I 
ran into some strange behaviour.

I intended to start a vncserver as part of the boot process. I build the 
script based on several existing scripts (a.o. the apache script). The 
script works as expected when run from the command line in a operational 
FreeBSD system. During boot however it does not.

Probem description:
To be more specific it looks like the construction with the default 
value of a variable defined in the script and possibly being overridden 
in rc.conf DOES NOT WORK WHILE BOOTING.

Note that since this is my first rc.d script, I might as well be doing 
something wrong, nevertheless the operation of the script works 
different in the two modes.

Remark: I realize that there is a separate mailing list for rc.d things. 
The website for it however does not show any messages (but then maybe 
there are none). For this reason I post this message to both the general 
questions and the rc mailing list.

Some details:
-----------------------------------------------------------------------------------------------------------------
I recently installed this system from the 5.3 ISO. As far as I know 
nothing was changed to the rc.d part.
uname -a output:
FreeBSD peter-test-vm1.itsef.com 5.3-RELEASE FreeBSD 5.3-RELEASE #0: Fri 
Nov  5 04:19:18 UTC 2004     
root at harlow.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC  i386
-----------------------------------------------------------------------------------------------------------------
rc.conf:
...
# To start vncserver on startup:
vncserver_enable="YES"
vncserver_user="swieten"
vncserver_display=":0"
...
-----------------------------------------------------------------------------------------------------------------
my script:
#!/bin/sh

# PROVIDE: vncserver
# This scripts starts vncserver running as user [vncserver_user] at 
[vncserver_display]
# Author: PvSwieten

# Define these vncserver_* variables in one of these files:
#       /etc/rc.conf
#       /etc/rc.conf.local
#
# DO NOT CHANGE THESE DEFAULT VALUES HERE
#
vncserver_enable="NO"
vncserver_user="root"
vncserver_display=":0"

. /etc/rc.subr

name="vncserver"
rcvar=`set_rcvar`

start_cmd="vncserver_start"
stop_cmd="vncserver_stop"


vncserver_start()
{
        su -l ${vncserver_user} -c "/usr/local/bin/vncserver -geometry 
1152x864 $vncserver_display"
}

vncserver_stop()
{
        su -l ${vncserver_user} -c "/usr/local/bin/vncserver -kill 
${vncserver_display}"
}

load_rc_config $name
run_rc_command "$1"
-----------------------------------------------------------------------------------------------------------------

-- 
--------------------------------------------------------
Peter van Swieten            Tel +31 15 2692533
TNO-ITSEF BV                 Fax +31 15 2692555
Delftechpark 1               http://www.itsef.com
2628 XJ Delft                swieten at itsef.com
The Netherlands



More information about the freebsd-questions mailing list