What is start-stop-daemon in linux scripting?

LinuxShellinit.dStart Stop-Daemon

Linux Problem Overview


What is start-stop-daemon and how should it be used?

I am trying to automate a particular program to run. Whenever the system starts, the program should run. For that I am writing script in /etc/init.d/ location.

Linux Solutions


Solution 1 - Linux

It is a program to manage the start and stop of system level background processes (daemons). You use it by passing in parameters (such as the pid file to create/check) and command arguments for the process you want to launch.

Then, you do one of two things:

start-stop-daemon -S [other arguments] something

start something, if something wasn't already running. If it was running, do nothing.

start-stop-daemon -K [other arguments] something

stop something. If something wasn't running, do nothing.

The man page provides more information on the various arguments. Typically a template is provided in /etc/init.d/ which has other commands for the init process that controls the running of background processes.


###What does it mean?

> start-stop-daemon --start --background -m --oknodo > --pidfile ${PIDFILE} --exec ${DAEMON} -- ${TARGETDIR}

  • --background = launch as a background process
  • -m = make a PID file. This is used when your process doesn't create its own PID file, and is used with --background
  • --oknodo = return 0, not 1 if no actions are taken by the daemon
  • --pidfile ${PIDFILE} = check whether the PID file has been created or not
  • --exec = make sure the processes are instances of this executable (in your case, DAEMON)

Solution 2 - Linux

Copy the /etc/init.d/skeleton file (to e.g. /etc/init.d/rajeevdaemon or another good name), which is a shell script with a lot of comments, and edit it to suit your needs. Then add appropriate symlinks from e.g. /etc/rc2.d/S98rajeevdaemon and /etc/rc2.d/K98rajeevdaemon to it.

Read more about runlevels.

And recent (or future) Linux distributions are using more and more systemd

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionRajeev DasView Question on Stackoverflow
Solution 1 - LinuxBurhan KhalidView Answer on Stackoverflow
Solution 2 - LinuxBasile StarynkevitchView Answer on Stackoverflow