On Mon, 06 Dec 2010 01:30:12 -0500, Nico Kadel-Garcia wrote:
On Sun, Dec 5, 2010 at 10:46 PM, Michael D. Berger m_d_berger_1900@yahoo.com wrote:
On Sun, 05 Dec 2010 10:50:53 -0500, Robert Spangler wrote:
On Friday 03 December 2010 19:30, Michael D. Berger wrote:
[...]
Check /etc/rc.d/rc6.d and insure that you have K??yourscriptname in there. It looks like your script demon was setup to be run but was never properly setup to be shut down. When shutting down the system the system is switched to run level 6.
The correct K link does appear in /etc/rc.d/rc6.d . I wrote a "stop" script that stops my daemon, does sleep 5, and then calls shutdown (or reboot). I don't like this kluge, but it does work. Could it be that my daemon stop procedure is too slow or complex for shutdown? The TERM code does send stop messages to and join several threads, which in turn do the same to nested threads. Each thread does some stop logging, among other things.
Mike.
"Taking too long" is unlikely. Running through the shutdown init scripts is normally a serial operation, not a parallel one.
It could be that your shutdown script is simply incomplete, and fails to *finish* stopping a process before proceeding to the next one. If you wait on each threed to stop, surveying it for status and killing it whan an ax only if necessary, then you may have a better fighting chance of getting it shut down gracefully.
I've had some recent work with init scripts that weren't written as init scripts, that get confused and hang ridiculously awaiting further input. Issuing yet another "shutdown" or "reboot" command at that point will simply re-run your shutdown procedures, especially this shutdown script: that way can lie madness if your "threads" aren't shut down gracefully.
It sounds like you need more thorough logging of what your shutdown script does.....
I think that I am missing something. In my script in /etc/init.d :
stop) echo -n "Stopping $myThing: " killproc -d 5 $myThing_prog sleep 30 echo rm -f $VAR_SUBSYS_MYTHING ;;
The sleep 30 is not usually there, but it didn't make any difference. There certainly was not a 30 second delay in the shutdown sequence.
I also put a sleep(30) in the TERM signal processor and there was no difference. (BTW, the daemon is in C++.)
When you say the shutdown runs through the scripts sequentially, then why didn't my sleeps work? When I call the stop for my daemon without shutting down, there is no problem.
BTW, it is K03 ...
Thanks, Mike.