据我所知,systemd不会对此做得特别好。据我了解,您想覆盖的行为sshd.service
,对吧?
幸运的是,systemd就是为这种事情而设计的。只需将您的服务定义放入/etc/systemd/system/ssh.service
,执行systemctl daemon-reload
以重新加载单元文件,systemd将自动使用该配置而不是system ssh.service
。
也想systemctl enable mysshd.service
工作吗?没问题。在[Install]
单位文件的部分中,添加一行Alias=mysshd.service
。然后执行systemctl reenable ssh.service
以systemd修复单元符号链接,您就很高兴了。
现在,您还没有提供mysshd.service
应该做什么的详细信息。如果它与正常情况完全不同,那就ssh.service
太好了!使用上面的方法。但是,如果您只想更改一件小事情,那么您使用的是错误的方法。systemd允许您创建将在普通单位文件之上应用的单位文件的“片段”。这使您可以添加或覆盖单个指令,同时允许单元文件的其余部分从程序包管理器接收更新。为此,只需创建即可/etc/systemd/system/ssh.d/my-custom-config.conf
(您可以更改my-custom-config.conf
为所需的内容,也可以有多个覆盖文件)。在该文件中,放置要更改或添加到通常的任何指令ssh.service
。您甚至可以添加Alias=
指令,这样就systemctl start mysshd.service
可以了!只记得执行systemctl daemon-reload
完成之后(如果使用Alias=
,则systemctl reenable ssh.service
)。
顺便说一句,永远不要在中更改systemd单位文件/usr/lib/systemd
。曾经!文件系统层次结构标准要求将/usr
其视为只读。实际上,这意味着包管理器可以处理/usr
(除外/usr/local
),并且您不会碰到包管理器所处理的内容-尤其是因为所做的任何更改最终都可能会被覆盖。而是将您的东西放到/etc
。