I was trying to get the Shadowsocks server running automatically after booting, and I used the
rc.local file, but it was not working.
/usr/local/bin/ssserver -c /etc/shadowsocks.json -d start #!/bin/bash exit 0
- I added
- I also fixed the symbolic link
/etc/rc.local -> /etc/rc.d/rc.local(default privilege
777) as suggested here.
However, the code in
rc.local is still not working when booting. It turned out that
rc.local is not running when the system starts. With some help from here, I was able to diagnose the issue further.
Here is the
/etc/systemd/system/rc-local.service file (I didn't change anything):
[Unit] Description=/etc/rc.d/rc.local Compatibility ConditionFileIsExecutable=/etc/rc.d/rc.local After=network.target [Service] Type=forking ExecStart=/etc/rc.d/rc.local start TimeoutSec=0 RemainAfterExit=yes GuessMainPID=no
-- Is this file okay?
When I do
systemctl enable rc-local, I get this error:
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. Possible reasons for having this kind of units are: 1) A unit may be statically enabled by being symlinked from another unit's .wants/ or .requires/ directory. 2) A unit's purpose may be to act as a helper for some other unit which has a requirement dependency on it. 3) A unit may be started when needed via activation (socket, path, timer, D-Bus, udev, scripted systemctl call, ...). 4) In case of template units, the unit is meant to be enabled with some instance name specified.
I am not sure which reason is my situation, since the
rc.local file is so simple.