Problem stopping a program
[LoN]Kamikaze
LoN_Kamikaze at gmx.de
Wed Mar 29 09:45:03 UTC 2006
Does the daemon offer a way of termination? If so you can simply overrun
stop_cmd().
Paul Schmehl wrote:
> I'm working on a new port that uses a tcl script in daemon mode. I've
> written an rc.d script to start and stop the daemon, and I'm having a
> problem stopping the daemon. If I do it immediately, it stops just
> fine, but if I leave the daemon running for a while, I cannot. (The
> daemon spawns two child processes after it's started.)
>
> Here's an example: /usr/local/etc/rc.d/sguild.sh restart
> Stopping sguild
> Waiting for PIDS: 4554 4558 4559, 4554 4558 4559, 4554 4558 4559, 4554
> 4558 4559, 4554 4558 4559, 4554 4558 4559, 4554 4558 4559, 4554 4558
> 4559, 4554 4558 4559, 4554 4558 4559, 4554 4558 4559, 4554 4558 4559,
> 4554 4558 4559, 4554 4558 4559,
>
> This will go on indefinitely. If I kill the process and then try
> restarting again, the child processes are gone, but the parent process
> is not.
>
> bash-2.05b# /usr/local/etc/rc.d/sguild.sh restart
> Stopping sguild
> Waiting for PIDS: 4554, 4554, 4554^C
> bash-2.05b# /usr/local/etc/rc.d/sguild.sh restart
> Stopping sguild
> Waiting for PIDS: 4554, 4554^C
>
> However, if I kill the (rc.d) process and then try to kill the daemon
> from the cli, it dies immediately.
>
> bash-2.05b# ps -auxw | grep sguild
> root 4554 0.0 0.7 3636 2744 p0- I 11:21PM 0:00.08
> /usr/local/bin/tclsh8.4 /usr/local/bin/sguild -D -c /usr/local/etc/s
> root 34417 0.0 0.2 1408 732 p0 R+ 2:20AM 0:00.00 grep sguild
> bash-2.05b# kill -9 4554
> bash-2.05b# ps -auxw | grep sguild
> root 34419 0.0 0.1 1408 568 p0 R+ 2:20AM 0:00.00 grep sguild
>
> Here's the stop_cmd section of the script. (I had to write this because
> the standard rc.d script couldn't find the process because the cli is
> /usr/local/bin/tclsh8.4 /usr/local/bin/sguild.)
>
> sguild_stop() {
> if [ -z "${pids}" ]; then
> echo "${name} not running?"
> else
> echo "Stopping ${name}"
> kill -${sig_stop:-TERM} ${pids}
> wait_for_pids ${pids}
> fi
> }
>
> I've tried using KILL instead of TERM, but it doesn't make any
> difference. Any idea what's wrong?
>
> Paul Schmehl (pauls at utdallas.edu)
> Adjunct Information Security Officer
> University of Texas at Dallas
> AVIEN Founding Member
> http://www.utdallas.edu/
More information about the freebsd-ports
mailing list