RedHat daemon function usage

bash, daemon, init, linux, redhat

Solution

To answer the question you guess that you have, is that `--pidfile` is used to check whether the daemon process is already running. On RHEL (and derivates) the `daemon` function won't write the pidfile.

In the case that the program stays in the foreground it has to be explicitly sent to the background by appending `&` to the command and the pid has to be fetched afterwards. `$!` is not usable when using `daemon`.

Problem

I'm working on an init script for Jetty on RHEL. Trying to use the `daemon` function provided by the init library (`/etc/rc.d/init.d/functions`). I found this terse documentation, and an online example (I've also been looking at other init scripts on the system for examples). Look at this snippet from online to start the daemon ``` daemon --user="$DAEMON_USER" --pidfile="$PIDFILE" "$DAEMON $DAEMON_ARGS &" RETVAL=$? pid=`ps -A | grep $NAME | cut -d" " -f2` pid=`echo $pid | cut -d" " -f2` if [ -n "$pid" ]; then echo $pid > "$PIDFILE" fi ``` Why bother looking up the `$PID` and writing it to the `$PIDFILE` by hand? I guess I'm wondering what the point of the `--pidfile` option to the `daemon` function is.

Original source