1

I use Debian Lenny (I know lenny is old and other bla bla) and would like to place a program on the start-up. I use update-rc.d by adding an executable file on /etc/init.d. By referring to http://wiki.debian.org/LSBInitScripts , I need to add a LSB on /etc/init.d/myprogram

### BEGIN INIT INFO
# Provides:          myprogram
# Required-Start:    $all
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start daemon at boot time
# Description:       Enable service provided by daemon.
### END INIT INFO

then do I need to append any script like:

DAEMON_PATH="/home/myprogram"
DAEMON=node
DAEMONOPTS="-my opts"
NAME=node
DESC="myprogram"
PIDFILE=/var/run/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME

case "$1" in
start)
    printf "%-50s" "Starting $NAME..."
    cd $DAEMON_PATH
    PID=`$DAEMON $DAEMONOPTS > /dev/null 2>&1 & echo $!`
    #echo "Saving PID" $PID " to " $PIDFILE
        if [ -z $PID ]; then
            printf "%s\n" "Fail"
        else
            echo $PID > $PIDFILE
            printf "%s\n" "Ok"
        fi
;;
status)
        printf "%-50s" "Checking $NAME..."
        if [ -f $PIDFILE ]; then
            PID=`cat $PIDFILE`
            if [ -z "`ps axf | grep ${PID} | grep -v grep`" ]; then
                printf "%s\n" "Process dead but pidfile exists"
            else
                echo "Running"
            fi
        else
            printf "%s\n" "Service not running"
        fi
;;
stop)
        printf "%-50s" "Stopping $NAME"
            PID=`cat $PIDFILE`
            cd $DAEMON_PATH
        if [ -f $PIDFILE ]; then
            kill -HUP $PID
            printf "%s\n" "Ok"
            rm -f $PIDFILE
        else
            printf "%s\n" "pidfile not found"
        fi
;;

restart)
    $0 stop
    $0 start
;;

*)
        echo "Usage: $0 {status|start|stop|restart}"
        exit 1
esac

I felt like LSBInitScripts and the above scripts are different thing, but when I check some files on /etc/init.d, they have similar scripts. Could you please clarify if I need the above script or not. If I need the use the script above, do I need to create a .pid file or will it be created automatically?

Angs
  • 502
  • 2
  • 7
  • 21

1 Answers1

2

As far as it's concerned in this context, they're the same thing. The LSB information is just metadata in the form of shell comments added to the init beginning of the script.

Just combine those two chunks. It should contain:

  1. The interpreter line (e.g., #!/bin/sh)
  2. The LSB information, edited to your application's needs.
  3. The rest of the script (start/stop functions, etc.).

If you need an example you can look at /etc/init.d/skeleton. When you're done, put the file in /etc/init.d/ and use insserv instead of update-rc.d to install the symlinks.

bahamat
  • 39,666
  • 4
  • 75
  • 104
  • https://unix.stackexchange.com/a/480897/5132 /etc/init.d/skeleton is not the way for later versions of Debian. – JdeBP Nov 10 '18 at 04:55