Trouble with freebsd rc system.
Eric van Gyzen
eric at vangyzen.net
Mon Sep 15 02:08:20 UTC 2014
On Sep 14, 2014, at 6:53 PM, Alfred Perlstein <alfred at freebsd.org> wrote:
>
> On 9/14/14, 3:40 PM, Ian Lepore wrote:
>> On Sun, 2014-09-14 at 15:26 -0700, Alfred Perlstein wrote:
>>> Hey folks,
>>>
>>> We are building an appliance based on FreeBSD.
>>>
>>> One of the issues we have is that during development we need to know
>>> which rc script we are in during boot so that if something is hanging or
>>> otherwise misbehaving we know which script it is.
>>>
>>> I am contemplating this hack to /etc/rc.subr's run_rc_command() method:
>>>
>>> run_rc_command()
>>> {
>>> _return=0
>>> rc_arg=$1
>>> if [ -z "$name" ]; then
>>> err 3 'run_rc_command: $name is not set.'
>>> fi
>>>
>>> # Don't repeat the first argument when passing additional command-
>>> # line arguments to the command subroutines.
>>> #
>>> shift 1
>>> rc_extra_args="$*"
>>>
>>> echo "===> $name $rc_arg"
>>>
>>>
>>> As you can see I've added the call to echo so we know where we are.
>>>
>>> This is somewhat suboptimal because we really only want that output
>>> during startup.
>>>
>>> So a few questions:
>>>
>>> 1. Is there a way to know we are booting when inside of
>>> /etc/rc.subr:run_rc_command() ?
>>> 2. Is there a magic thing I'm missing that does what I want (output
>>> which /etc/rc.d/ script I am about to run)?
>>> 3. How would I make a knob to turn off the "echo" so that I can
>>> contribute this back to FreeBSD without getting into a bikeshed on
>>> bootup messages.
>>>
>>> Kindly please advise.
>>>
>>> -Alfred
>> A bit further down in run_rc_command, in the start) case, is:
>>
>> check_startmsgs && echo "Starting ${name}."
>>
>> and that output is controlled with rc_startmsgs=yes, which is the
>> default.
>>
>> -- Ian
>>
>>
>>
> I see that, however I've often been hung up in a rc script and that message is not displayed... let me check, maybe we have dumb defaults somehow.
run_rc_script() sets up a signal hander for SIGINFO, so you can type Ctrl-T to see which script is currently running.
Eric
More information about the freebsd-arch
mailing list