I am running Arch Linux. I have a service on /etc/systemd/system/ with the following description[Unit]After=network.target[Service]Type=simpleExecStart=(...)service.pyExecReload=(...)service.pyRestart=alwaysI set it to start after the network is established as it depends on a network connection.When I boot the PC, the service is always inactive. If I start it manually it runs perfectly. It also restarts if there is some internal error. Why does it not start on boot?EDITWhen enabling the service I get this message:  ~ systemctl enable py_service.serviceThe unit files have no installation config (WantedBy, RequiredBy, Also, Aliassettings 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.1) it is not symlinked2) it is not a helper3) I thought this was covered by the After=network...4) I do not know what this meansEDIT 2 Following the suggestion of @dustball, I edited to:cat /etc/systemd/system/py_service.service [Install]WantedBy=multi-user.target[Unit]After=network.target[Service]Type=simpleExecStart=(...)service.pyExecReload=(...)service.pyRestart=alwaysBut it did not start on boot :(EDIT 3The above configuration works, I forgot to enable it (thanks to @Daniel H)reload the services using sudo systemctl daemon-reloadand then enable it usingsystemctl enable py_service.service
Service in Arch not starting on PC boot
arch linux;systemd;startup
The error message already gives you the answer (partially). Services have an [Install] section. The only option in there is WantedBy=. For a service to be enabled, it must be wanted by a target.Example: NetworkManager has WantedBy=network.target, so when you enable NetworkManager, it's grouped into network.target, and started as soon as systemd starts network.targetThink of it like the runlevels in SysV-init, a daemon must be inserted into a runlevel, otherwise... when should it start?A safe default is to set WantedBy=multi-user.target, it's the last one that's started.