On Wed, Nov 30, 2005 at 10:00:34AM +0000, John Talbut wrote:
> Tim Ruehsen wrote:
> >>I have an external programme that is calling for the function killproc.
> >> This is apparently not available in Debian Sarge.
If it's a shell script, you could change it to include
/lib/lsb/init-functions.
> >>
> >>What is the policy? What is the story? What should be used instead?
> >
> >
> >If you are using killproc for sending signals to processes by name
> >(instead of by processid) give killall a try. It belongs to the packet
> >'psmisc'.
> >
> >Tim
> >
> Yes, thanks. pkill also seems to be a possibility. And I would like to
> know more. Debian does not seem to give any explanation as to why it
> does not use killproc. Do they suggest an "official" alternative?
The function "killproc" *is* in the file /lib/lsb/init-functions, even in Sarge:
killproc () {
local pidfile sig status
set -- `POSIXLY_CORRECT=1 getopt "p:" $*`
pidfile=
for i in $*; do
case $i in
-p) pidfile=$2; shift 2;;
--) shift; break;;
esac
done
if [ ! $pidfile ]; then
pidfile=/var/run/$(basename "$1").pid
fi
if [ $2 ]; then
sig=$(echo $2 | sed -e 's/^-\(.*\)/\1/')
sig=$(echo $sig | sed -e 's/^SIG\(.*\)/\1/')
/sbin/start-stop-daemon --stop --pidfile "$pidfile" --signal $sig --quiet
status="$?"
[ "$status" = 1 ] && return 3 # program is not running
return 0
else
/sbin/start-stop-daemon --stop --pidfile "$pidfile" --retry 5 --quiet --oknodo
fi
}
Debian unstable uses it, at least:
$ grep -R killproc /etc/init.d/
/etc/init.d/autofs: killproc $DAEMON -USR2 >& /dev/null
/etc/init.d/clamav-freshclam: killproc -p $PIDFILE $DAEMON
/etc/init.d/clamav-freshclam: killproc -p $PIDFILE $DAEMON 1
/etc/init.d/clamav-daemon: killproc -p $THEPIDFILE
/etc/init.d/clamav-daemon: killproc -p $SUPERVISORPIDFILE
/etc/init.d/clamav-daemon: killproc -p $THEPIDFILE $DAEMON USR2
/etc/init.d/clamav-daemon: killproc -p $THEPIDFILE $DAEMON 1
Attachment:
signature.asc
Description: Digital signature