/etc/rc.local (RHEL based)
or
/etc/rc.d/rc.local (Found in Debain based distros)
In fact systemd actually maintains backward compatibility for the old SysV init script (/etc/init.d/) by using the systemd-sysv-generator utility. We can manually invoke this with:
/usr/lib/systemd/system-generators/systemd-sysv-generator
The init scripts get called just after the basic.target is executed.
By default the rc.local file is not present - so lets create it and ensure that it's executable:
sudo touch /etc/rc.local
Since the file is treated like a script we should add the relevant interpreter at the beginning of the file for example:
#!/bin/bash
Set the execution bits:
sudo chmod +x /etc/rc.local
and finally enable the rc.local service with:
sudo systemctl enable rc-local.service
Although this failed with the following message:
The unit files have no installation config (WantedBy, RequiredBy, Also, Alias
settings in the [Install] section, and DefaultInstance for template units).
This means they are not meant to be enabled using systemctl.
This is in fact because the service is static - i.e. static services have no [Install] section and are typically used as dependencies for other services.
So after some digging it turns out that the service does not need to be enabled (after inspecting the service file):
cat /usr/lib/systemd/system/rc-local.service
....
# This unit gets pulled automatically into multi-user.target by
# systemd-rc-local-generator if /etc/rc.d/rc.local is executable.
...
So it turns out by turning on the executable bit of rc.local it will be pulled into the multi-user target.
0 comments:
Post a Comment