Create a custom /etc/init.d script in Debian 10 Buster

6,144

Smartass response:

apt-get install sysvinit-core

Disclaimer: I have not done this on Buster, don't try it on an important system.

Assuming you'd like to stick with the new default since Jessie, systemd, the init.d scripts are not the preferred method. Configuring a systemd service unit would be the way to go.

Share:
6,144
tcdaly
Author by

tcdaly

Updated on September 18, 2022

Comments

  • tcdaly
    tcdaly over 1 year

    I need to develop an /etc/init.d script to start and stop a server (binary executable) in Debian 10 Buster. Whereas in earlier versions of Debian, you would write a complete shell script that issues calls to 'start-stop-daemon', in recent releases these mechanics seem to be have been abstracted away. The manual page 'init-d-script' gives a simple script that will start and stop a server based on setting a single variable 'DAEMON'.

    However I need to customise by writing a lock file to disc after the server starts, change the current working directory and pass a custom argument to the server.

    The manual page refers to developing override functions such as 'do_start_override' and 'do_stop_override' which presumably are called instead of the default functions. How should I approach writing an override function? Should I copy and paste the function 'do_start_cmd()' from '/lib/init/init-d-script' and modify it? Or should I call the function 'start_daemon()' that is defined in '/lib/lsb/init-functions'?

    • Michael Hampton
      Michael Hampton over 4 years
      Don't write ancient init.d scripts anymore, just make a systemd unit.
  • tcdaly
    tcdaly over 4 years
    Thanks, so my options were to roll back to the older System V init system by installing sysvinit-core, then write an /etc/init.d script, or stick with the new systemd and write a service unit file? I have done the latter, and it proved pretty straightforward.
  • Mantriur
    Mantriur over 4 years
    The switch to systemd has been a bit controversial, as it doesn't add much beyond complexity for the average server, hence the smartass part. ;-) It has its merits on more dynamic systems, like a desktop. But neither is inherently better.