Systemd: Difference between revisions

From Leo's Notes
This page was last edited on 23 March 2015, at 06:59.
No edit summary
No edit summary
Line 48: Line 48:


Then place your scripts in the startup directory starting with the letter 'S'.
Then place your scripts in the startup directory starting with the letter 'S'.
Enable the new service by running:
systemctl enable startup
systemctl start startup
Verify this:
systemctl status startup.service


[[Category:Linux]]
[[Category:Linux]]

Revision as of 06:59, 23 March 2015

SystemV-like Init Scripts

If you have custom packages that make use of the old SystemV startup scripts, you can use the following files to make use of such scripts.

In /usr/lib/systemd/system/startup.service

[Unit]
Description=Custom SystemV-like Startup
After=network.target
ConditionFileIsExecutable=/usr/local/sbin/custom-startup-initd

[Service]
Type=oneshot
ExecStart=/usr/local/sbin/custom-startup-initd
TimeoutSec=0
StandardOutput=tty
RemainAfterExit=yes
SysVStartPriority=99

[Install]
WantedBy=multi-user.target

A few things of interest.

  • The ConditionFileIsExecutable will only run the script if it's executable. It basically does a test -x on the file before this continues.
  • RemainAfterExit will cause systemd to show the service as active even after the script has finished execution.


In /usr/local/sbin/custom-startup-initd:

#!/bin/sh
StartupDir="/usr/local/boot/startup"

# Run all scripts starting with 'S'
for i in `ls $StartupDir/S*` ; do
        ScriptName=`basename $i`
        sh $StartupDir/$ScriptName
done

# Success exit code.
exit 0

Make the directory:

mkdir -p /usr/local/boot/startup/

Then place your scripts in the startup directory starting with the letter 'S'.

Enable the new service by running:

systemctl enable startup
systemctl start startup

Verify this:

systemctl status startup.service