2

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'?

Anton Danilov
  • 4,874
  • 2
  • 11
  • 20
tcdaly
  • 75
  • 2
  • 9

1 Answers1

5

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.

Mantriur
  • 369
  • 2
  • 13
  • 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. – tcdaly Aug 12 '19 at 15:41
  • 1
    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. – Mantriur Aug 13 '19 at 19:01