1.14. 扩展默认单元配置
您可以使用额外的 systemd 配置选项扩展默认单元文件。
步骤
在
/etc/systemd/system/
中创建一个配置目录:# mkdir /etc/systemd/system/<name>.service.d/
将 <name> 替换为您要扩展的服务的名称。语法适用于所有单元类型。
创建一个带有 .conf 后缀的配置文件:
# touch /etc/systemd/system/name.service.d/<config_name>.conf
将 <config_name> 替换为配置文件的名称。此文件遵循普通单元文件结构,且您必须在合适的部分中指定所有指令,请参阅 单元文件结构。
例如,要添加自定义依赖项,请使用以下内容创建配置文件:
[Unit] Requires=<new_dependency> After=<new_dependency>
<new_dependency> 代表要被标记为依赖项的单元。另一个例子是主进程退出后重新启动服务的配置文件,延迟 30 秒:
[Service] Restart=always RestartSec=30
创建仅聚焦一个任务的小配置文件。这些文件可轻松地移动或者链接到其他服务的配置目录。
对单元应用更改:
# systemctl daemon-reload # systemctl restart <name>.service
例 1.1. 扩展 httpd.service 配置
要修改 httpd.service
单元,以便在启动 Apache 服务时自动执行自定义 shell 脚本,请执行以下步骤。
创建目录和自定义配置文件:
# mkdir /etc/systemd/system/httpd.service.d/
# touch /etc/systemd/system/httpd.service.d/custom_script.conf
通过将以下文本插入到
custom_script.conf
文件中,来指定您在主服务进程后要执行的脚本:[Service] ExecStartPost=/usr/local/bin/custom.sh
应用单元更改:
# systemctl daemon-reload
# systemctl restart httpd.service
/etc/systemd/system/
配置目录中的文件优先于 /usr/lib/systemd/system/
中的单元文件。因此,如果配置文件包含一个只能指定一次的选项,如 Description
或 ExecStart
,则此选项的默认值可被覆盖。请注意,在 systemd-delta
命令的输出中(在 Monitoring overrides units 中所述)中,比如这个单元总是被标记为 [EXTENDED],即使总和和一些选项也会被覆盖。