hi, all, i had write a #!/sbin/runscript script, but status will not turn to "started", is there some error in this script or this is a bug? THX all of you.
source code first (i want to start a bash script with runscript): +--------------------------------------------------------------------------------------------------------------------------------------- | #!/sbin/runscript | #file name: test | .....<in start() {> | start-stop-daemon -S -p "${PIDFILE}" -m -b -a "${EXECFILE}" -- --Pidfile "${PIDFILE}" | ..... +--------------------------------------------------------------------------------------------------------------------------------------- sudo ./test start * Starting Test ... [ ok ] sudo ./test start * Starting Test ... process already running. sudo ./test stop * WARNING: test has not yet been started. sudo ./test status * status: stopped but the bash script is running, and the $PIDFILE had filled with correct pid number, so ,i can;t stop it with runscript. in another way to write this script, but use bash this time, it totaly OK. [FULL source code of these scripts] +--------------------------------------------------------------------------------------------------------------------------------------- | | #file name: test | #!/sbin/runscript | PIDFILE=/tmp/runsc/pid/test.pid | EXECFILE=/tmp/runsc/testbash1 | | depend() { | need net | } | | start() { | ebegin "Starting Test" | start-stop-daemon -S -p "${PIDFILE}" -m -b -a "${EXECFILE}" -- --Pidfile "${PIDFILE}" | eend $? | #return 0 | } | | stop() { | echo "stop daemon" | ebegin "Stopping Test" | start-stop-daemon -K -p "${PIDFILE}" -a "${EXECFILE}" | #cat "${PIDFILE}" | xargs -i kill '{}' | eend $? | | } | | status() { | if [ -a "${PIDFILE}" ]; then | echo "exit file" | return 0; | else | echo "not exit file" | return 1; | fi | } | +--------------------------------------------------------------------------------------------------------------------------------------- | | #file name: test.sh | #!/bin/bash | PIDFILE=/tmp/runsc/pid/test.pid | EXECFILE=/tmp/runsc/testbash1 | | start() { | echo "Starting Test" | echo start-stop-daemon -S -p "${PIDFILE}" -m -b -a "${EXECFILE}" -- --Pidfile "${PIDFILE}" | #return 0 | } | | stop() { | echo "stop daemon" | echo "Stopping Test" | #start-stop-daemon -K -o -p "${PIDFILE}" | cat "${PIDFILE}" | xargs -i kill '{}' | } | | status() { | if [ -a "${PIDFILE}" ]; then | echo "exit file" | return 0; | else | echo "not exit file" | return 1; | fi | } | | case "$1" in | start) | start | ;; | stop) | stop | ;; | status) | status | ;; | *) | echo "Usage: $0 {start|stop|restart|force-reload|make}" >&2 | exit 1 | ;; | esac | +--------------------------------------------------------------------------------------------------------------------------------------- | | #file name: testbash1 | #!/bin/bash | while true; do | #echo '$pid_file='$pid_file | echo "a" >> /tmp/runsc/pid/output.log; sleep 1 | echo "aa" >> /tmp/runsc/pid/output.log; sleep 1 | echo "aaa" >> /tmp/runsc/pid/output.log; sleep 1 | echo "aaaa" >> /tmp/runsc/pid/output.log; sleep 1 | echo "aaaaa" >> /tmp/runsc/pid/output.log; sleep 1 | done | +---------------------------------------------------------------------------------------------------------------------------------------