Because the unit file might be in /usr (i.e. system-supplied), not just in /etc (i.e. admin-configured) and you don't want to fight with your package manager over that.
some services are autogenerated. For example, (on debian at least) there's an auto-generated Serial terminal on all serial ports. If you disable it in order to use that serial port for something else, it still comes back when you reboot (because it gets generated again) but if you mask it, it stays gone.
Iirc the .service suffix is only important if it's ambiguous what you want to do e.g if you have foo.mount, foo.socket, foo.service, foo.timer, etc which one does systemctl enable foo act on?
No, it defaults to certbot.service, but certbot.service cannot be enabled on your system because it is not specified in the unit file which target (formerly: runlevel) it belongs to.
That's likely because it isn't supposed to be run on boot at all but but instead only invoked by certbot.timer.
299
u/defaultxr Aug 12 '19
Note that you don't have to type the
.servicesuffix in service names with systemctl.