Systemd: Difference between revisions

From Leo's Notes
This page was last edited on 24 February 2017, at 04:21.
m fix highlighting
m Text replacement - "{{highlight|lang=bash" to "{{highlight|lang=terminal"
Line 41: Line 41:


In {{code|/usr/local/sbin/custom-startup-initd}}:
In {{code|/usr/local/sbin/custom-startup-initd}}:
{{highlight|lang=bash|code=
{{highlight|lang=terminal|code=
#!/bin/sh
#!/bin/sh
StartupDir="/usr/local/boot/startup"
StartupDir="/usr/local/boot/startup"

Revision as of 04:21, 24 February 2017

Journal

Systemd keeps tracks of service logs.

Clearing Journal

Clear all the entries by running:

# journalctl --vacuum-time=1seconds

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