Linux上的许多包都带有在后台运行的服务文件。通常,即使在删除关联的包之后,服务文件也不会被删除。因此,累积不需要的服务会给系统带来额外的负载。在这种情况下,删除不需要的服务文件变得势在必行。
为了删除服务文件,了解包含服务文件的目录集至关重要。
服务文件通常存储在几个特定的目录中,这取决于它们的用途和安装者。下面给出了目录列表。
/lib/systemd/system | 下载包中的服务文件 |
/etc/systemd/system | 系统管理员提供的服务文件 |
~/.config/SYSTEM/USERS | 普通用户的服务文件 |
因此,如果下载了一个包并提供守护进程和服务,那么这些文件将存储在/lib/systemd/system目录中。/etc/systemd/system目录包含由系统管理员创建的服务文件,只有sudo用户可以修改它们。而~/.CONFIG/SYSTEM/USERS目录包含由普通用户创建的服务文件。
如何访问服务文件
删除服务文件的第一步是查找它的确切路径。要查找路径,请使用systemctl status命令与服务名称。
systemctl状态[SERVICE—NAME]
要查找服务名称,您可以列出所有正在运行的服务。
systemctl列表单元文件——type = service——state = running
如果要列出所有的服务,请使用systemctl命令并带有—type和—state选项。
系统ctl列表-单位-文件
例如,要查找myservice.service的单元路径,我将执行status命令。
systemctl状态myservice. service
输出显示了加载部分中单元文件的路径。
现在我们已经获得了服务的路径,我们将在下一步中继续删除它。
警告:在从系统中删除服务文件之前,完全了解系统服务文件及其对系统的意义至关重要。从系统中删除重要的服务文件可能会造成不可逆转的损害。
如何删除服务文件
要在Linux上删除该服务,将使用系统ctl和rm命令行实用程序。使用systemctl停止和禁用该服务,然后使用rm从相应目录中删除服务文件。
要删除服务文件,请按照下面给出的命令序列操作。
sudo systemctl stop SERVICE—NAME
Sudo系统ctl禁用服务名
Sudo rm/lib/systemd/system/service-name#下载包中的服务
sudo rm/etc/systemd/system/SERVICE—NAME #管理员提供的服务
sudo rm~/. config/systemd/users/SERVICE—NAME #普通用户提供的服务
Sudo系统ctl后台进程-重新加载
sudo systemctl reset—failed
首先,建议停止该服务以确保其在删除过程中不运行,但禁用该服务也会阻止其再次启动。然后需要禁用它,这会阻止该服务自动启动;禁用该服务还会删除在.wants/或.requires/目录中创建的符号链接。之后,使用rm命令从相应目录中删除服务文件。
使用daemon—reload和execute reset—failed命令删除systemd配置。reset—failed命令重置所有处于失败状态的服务。
示例
在本例中,让我们删除由系统管理员创建的服务。服务名为myservice.service,并位于/etc/systemd/system目录中。
检查服务的状态。
systemctl状态myservice. service
服务正在运行;注意与加载部分对应的路径并禁用该服务。
sudo systemctl disable myservice. service
它还将从/etc/systemd/system目录中删除符号链接。
接下来,使用rm命令和服务文件路径删除服务文件。
Sudo rm/etc/systemd/system/myservice.service
现在,重新加载systemd配置以应用更改。
systemctl守护进程reload
就是这样!该服务已被删除,并且不再在您的系统中。通过检查服务状态进行验证。
结论
如果服务正在运行,即使不再需要它,删除服务也是强制性的。如果无人看管,它可能会消耗系统资源。在本指南中,我介绍了从Linux中删除服务的完整方法。首先,标识服务名和路径,然后禁用它。然后,从相应的目录中删除服务文件并重新加载systemd配置以完成该过程。