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