[arch-general] get pid of daemon in init script
Sentinel
kanocz at intrak.sk
Fri Feb 8 15:06:37 EST 2008
Hi!
It works perfectly (at least for me), just you have to ensure, that you
call it with appropriate rights while testing:
my testing:
sentinel at sentinel:~$ su
Password:
with power comes great responsibility
root at sentinel:/home/sentinel# PID=`pidof -o %PPID -x /usr/sbin/proftpd`
root at sentinel:/home/sentinel# echo $PID
7469
root at sentinel:/home/sentinel# [ -z "$PID" ] && echo "pid is empty"
root at sentinel:/home/sentinel#
Tom
Dan McGee wrote:
> On Feb 8, 2008 1:27 PM, Michael Krauss <hippodriver at gmx.net> wrote:
>
>> Hi to .*
>>
>> I must write a rc init script for a server I am packaging.
>> Therefor I have copied the init script of cups.
>> Now I recognized that both pid files, cups.pid and my own, in /var/run
>> are empty.
>>
>> Further investigations have shown that
>>
>> "pidof -o %PPID -x /usr/bin/cdvserver"
>>
>> returns nothing in the start) case but in stop) it seems to work.
>> I don't understand why pidof isn't working as expected.
>>
>
> Because you are calling pidof before the process starts- bash does not
> do lazy evaluation of your expressions.
>
> If you want to store the PID of the newly started process, you will
> have to make another PID=... call to get it in the else block where
> you access it.
>
>
>> Here is my init script:
>> #!/bin/bash
>>
>> . /etc/rc.conf
>> . /etc/rc.d/functions
>>
>> PID=`pidof -o %PPID -x /usr/bin/cdvserver`
>> PIDFILE="/var/run/cdvserver.pid"
>> case "$1" in
>> start)
>> stat_busy "Starting Codeville Server"
>> [ -z "$PID" ] && /usr/bin/cdvserver
>> if [ $? -gt 0 ]; then
>> stat_fail
>> else
>> echo "Started " $PID
>> echo $PID > $PIDFILE
>> add_daemon cdv
>> stat_done
>> fi
>> ;;
>> stop)
>> stat_busy "Stopping Codeville Server"
>> [ ! -z "$PID" ] && kill $PID &> /dev/null
>> if [ $? -gt 0 ]; then
>> stat_fail
>> else
>> rm $PIDFILE
>> rm_daemon cdv
>> stat_done
>> fi
>> ;;
>> restart)
>> $0 stop
>> sleep 1
>> $0 start
>> ;;
>> *)
>> echo "usage: $0 {start|stop|restart}"
>> esac
>> exit 0
>>
>>
>>
>
>
More information about the arch-general
mailing list