Files
finit/doc/config/service-wrappers.md
T
Joachim Wiberg b9ad9bcb21 doc: convert the documentation to the block format
The syntax overview no longer describes a line-based format, since that
is not what the rest of the documentation shows.  It now covers the
grammar, the two naming conventions, the nine aliases, and the leading
'-' on a path, and it says plainly that both formats are still read and
told apart per file by content.  Without that, a reader with an
existing configuration is left wondering what happened to it.

service-opts.md was a list of modifiers to place between a directive
and its command, so it needed rewriting rather than translating: there
are no positions left to describe.  It is now grouped by what the
settings do.

conditions.md needed correcting.  It presented '!' as a condition
prefix alongside '~'.  It is neither a condition nor a negation, it is
a flag on the block that means one thing on a service and another on a
run or task, so it is spelled reload-signal and required here, and the
page maps the old form to both.

Two things the pages claimed are not true.  The kill delay range is
1-300, not 1-60, and stop and reload scripts are no longer run without
a timeout.

ChangeLog.md keeps its line-based examples.  Those sit in historical
release entries, and rewriting them in a syntax that did not exist at
the time would misdate the format.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-07-30 15:21:31 +02:00

1.1 KiB

Service Wrapper Scripts

If your service requires to run additional commands, executed before the service is actually started, like the systemd ExecStartPre, you can use a wrapper shell script to start your service.

The Finit service .conf file can be put into /etc/finit.d/available, so you can control the service using initctl. Then use the path to the wrapper script in the Finit .conf service stanza. The following example employs a wrapper script in /etc/start.d.

Example:

  • /etc/finit.d/available/program.conf:

      service program {
          description   = "Example Program"
          runlevel      = "235"
          reload-signal = "none"
          command       = "/etc/start.d/program"
      }
    
  • /etc/start.d/program:

      #!/bin/sh
      # Prepare the command line options
      OPTIONS="-u $(cat /etc/username)"
    
      # Execute the program
      exec /usr/bin/program $OPTIONS
    

Note

The example sets <!> to denote that it doesn't support SIGHUP. That way Finit will stop/start the service instead of sending SIGHUP at restart/reload events.