在文中,我们将展示如何在Linux系统下修改现有的单元文件,内容有:什么是单元文件、扩展默认单元配置、覆盖默认的单元配置。
前言 系统上存储单元文件的主要目录有三个,但“/etc/systemd/system/”目录是为系统管理员创建或自定义的单元文件保留的。 1、/usr/lib/systemd/system/:安装软件包时删除的systemd单元文件。 2、/run/systemd/system/:在运行时创建的systemd单元文件。 3、/etc/systemd/system/:由“systemctl enable”命令创建的systemd单元文件以及为扩展服务而添加的单元文件。 参考:在Linux中创建自定义脚本和创建systemd服务单元文件的方法。
什么是单元文件? 单元文件包含描述单元并定义其行为的配置指令。几个systemctl命令在后台处理单元文件,使单元文件按预期运行。 单元文件使用以下通用语法: unit_name.type_extension httpd.service 1、unit_name (httpd) 代表单位名称。 2、type_extension(service)标识单元类型。 为了演示这一点,我们将以下两个参数添加到“httpd.service”文件中: Restart=on-failure RestartSec=5s 可以通过两种方式修改现有的systemd单元文件: 1、扩展默认单元配置。 2、覆盖默认的单元配置。
1、扩展默认单元配置 本节介绍如何使用其他配置选项扩展默认单元文件。 例如,要编辑“httpd.service”单元文件,请运行: $ sudo systemctl edit httpd.service 这会在“/etc/systemd/system/httpd.service.d/override.conf”下创建一个覆盖片段文件,并在您的文本编辑器中打开它。向httpd.service单元文件添加新参数,保存文件时,新参数将添加到现有服务文件中。 要应用对单元所做的更改,请执行: $ sudo systemctl daemon-reload 重启httpd服务加载新的服务配置(如果修改运行的单元文件,必须重新声明单元文件): $ sudo systemctl restart httpd 要恢复更改,请执行以下步骤。 要删除片段,请运行: $ sudo rm -r /etc/systemd/system/httpd.service.d 要在不重新启动系统的情况下将更改应用于单元文件,请执行“daemon-reload”选项重新加载所有单元文件并重新创建整个依赖关系树: $ sudo systemctl daemon-reload 要检查扩展或修改的单元文件,请运行以下命令输出清楚地表明文件“apache2.service”已扩展: $ systemd-delta [EQUIVALENT] /etc/systemd/system/default.target → /usr/lib/systemd/system/default.target [OVERRIDDEN] /etc/systemd/system/sshd.service → /usr/lib/systemd/system/sshd.service Files /usr/lib/systemd/system/sshd.service and /etc/systemd/system/sshd.service are identical [EXTENDED] /usr/lib/systemd/system/NetworkManager.service → /usr/lib/systemd/system/NetworkManager.service.d/NetworkManager-ovs.conf [EXTENDED] /usr/lib/systemd/system/apache2.service → /etc/systemd/system/apache2.service.d/override.conf [EXTENDED] /usr/lib/systemd/system/btrfs-balance.timer → /etc/systemd/system/btrfs-balance.timer.d/schedule.conf [EXTENDED] /usr/lib/systemd/system/btrfs-scrub.timer → /etc/systemd/system/btrfs-scrub.timer.d/schedule.conf [EXTENDED] /usr/lib/systemd/system/nfs-client.target → /usr/lib/systemd/system/nfs-client.target.d/nfs.conf [EXTENDED] /usr/lib/systemd/system/rpc-gssd.service → /usr/lib/systemd/system/rpc-gssd.service.d/options.conf [EXTENDED] /usr/lib/systemd/system/rpc-statd-notify.service → /usr/lib/systemd/system/rpc-statd-notify.service.d/options.conf [EXTENDED] /usr/lib/systemd/system/rpc-statd.service → /usr/lib/systemd/system/rpc-statd.service.d/options.conf [EXTENDED] /usr/lib/systemd/system/rpc-svcgssd.service → /usr/lib/systemd/system/rpc-svcgssd.service.d/options.conf [EXTENDED] /usr/lib/systemd/system/systemd-sysctl.service → /usr/lib/systemd/system/systemd-sysctl.service.d/50-kernel-uname_r.conf 12 overridden configuration files found.
2、覆盖默认的单元配置 本节介绍如何覆盖默认单元配置。 如果要在更新提供单元文件的包后保留更改,请编辑完整的单元文件,如下所示: $ sudo systemctl edit --full httpd.service 这会将当前单元文件加载到编辑器中。保存文件后,systemctl将在“/etc/systemd/system/httpd.service”创建一个文件。 要应用对单元所做的更改,请执行: $ sudo systemctl daemon-reload 重启httpd服务加载新的服务配置(如果修改运行的单元文件,必须重新声明单元文件): $ sudo systemctl restart httpd 请注意:“/etc/systemd/system”中的任何单元文件都会覆盖“/lib/systemd/system”中的相应文件。 要恢复更改或返回设备的默认配置,请删除以下自定义配置文件。 要删除完整的修改单元文件,请运行: $ sudo rm /etc/systemd/system/httpd.service 要在不重新启动系统的情况下将更改应用于单元文件,请执行“daemon-reload”选项重新加载所有单元文件并重新创建整个依赖关系树: $ sudo systemctl daemon-reload 要检查覆盖或修改的单元文件,请运行以下命令清楚地显示文件“apache2.service”已被覆盖: $ systemd-delta [OVERRIDDEN] /etc/systemd/system/apache2.service → /usr/lib/systemd/system/apache2.service --- /usr/lib/systemd/system/apache2.service 2021-07-08 22:20:27.000000000 +0530 +++ /etc/systemd/system/apache2.service 2021-07-09 14:36:06.989928469 +0530 @@ -13,6 +13,8 @@ KillMode=mixed TasksMax=infinity NotifyAccess=all +Restart=on-failure +RestartSec=5s [Install] WantedBy=multi-user.target [EQUIVALENT] /etc/systemd/system/default.target → /usr/lib/systemd/system/default.target [OVERRIDDEN] /etc/systemd/system/sshd.service → /usr/lib/systemd/system/sshd.service Files /usr/lib/systemd/system/sshd.service and /etc/systemd/system/sshd.service are identical [EXTENDED] /usr/lib/systemd/system/NetworkManager.service → /usr/lib/systemd/system/NetworkManager.service.d/NetworkManager-ovs.conf [EXTENDED] /usr/lib/systemd/system/btrfs-balance.timer → /etc/systemd/system/btrfs-balance.timer.d/schedule.conf [EXTENDED] /usr/lib/systemd/system/btrfs-scrub.timer → /etc/systemd/system/btrfs-scrub.timer.d/schedule.conf [EXTENDED] /usr/lib/systemd/system/nfs-client.target → /usr/lib/systemd/system/nfs-client.target.d/nfs.conf [EXTENDED] /usr/lib/systemd/system/rpc-gssd.service → /usr/lib/systemd/system/rpc-gssd.service.d/options.conf [EXTENDED] /usr/lib/systemd/system/rpc-statd-notify.service → /usr/lib/systemd/system/rpc-statd-notify.service.d/options.conf [EXTENDED] /usr/lib/systemd/system/rpc-statd.service → /usr/lib/systemd/system/rpc-statd.service.d/options.conf [EXTENDED] /usr/lib/systemd/system/rpc-svcgssd.service → /usr/lib/systemd/system/rpc-svcgssd.service.d/options.conf [EXTENDED] /usr/lib/systemd/system/systemd-sysctl.service → /usr/lib/systemd/system/systemd-sysctl.service.d/50-kernel-uname_r.conf 13 overridden configuration files found.
结语 在本文中,我们解释了如何使用两种不同的方法修改现有的systemd单元文件,选择其中一种方法执行操作即可。
相关主题 |