Linux的普通用户可以创建自定义的系统服务。而SYSTEM D服务主要由系统管理员使用SYSTEMCTL命令进行管理。同样的命令也可以用于管理特定于用户的服务;您所需要的只是一个-user标志。
在本指南中,我将介绍如何在Linux上创建用户特定的服务,以及如何使用systemctl管理它。
拥有正常用户服务的原因
普通用户服务不同于系统服务。普通用户服务是以登录用户为中心的。此服务将仅在创建它的用户的会话中工作。
如何创建正常用户服务
Linux上用户特定的服务放在~/. config/systemd/user目录中。如果这个目录不存在,则可以创建它。
mkdir—p~/. config/systemd/user
如果需要,-p标志用于创建父目录。~表示本地用户的主目录,相当于/home/user,而配置文件前的圆点使其隐藏。让我们创建一个简单的bash脚本文件,该文件将每30分钟将内存使用情况写入文本。我正在创建名为script.sh的脚本。
#!/bin/bash
虽然这是真的
做
免费—m>>/home/user/myfile.txt
睡眠1800
完成
此脚本可以在任何地方创建,但请确保脚本中指定的路径是绝对路径。
现在,让我们创建一个将在后台执行上述脚本的服务。启动任何文本编辑器,如Nano或Vim,并在其中粘贴下面给出的行。
【单位】
描述=我的服务
[服务]
类型=简单
ExecStart =/bin/bash/home/user/www.example.com
重新启动=开启-故障
[安装]
WantedBy = default. target
在[Unit]部分,Description指令只包含服务的名称。请注意,它不应超过80个字符。
[服务]部分包含三个重要指令。首先,Type;这是简单的,然后ExecStart包含我们自定义脚本的可执行文件。只有当出现故障时,服务才会重新启动。
[Install]部分包含WantedBy指令,该指令为default.Target,表示服务在达到默认运行级别时将在系统状态下启用,默认运行级别通常为多用户.Target或Graphical.Target。
现在,将文件保存在~/. config/systemd/user目录中,使用任意名称;我将其命名为myservice.service。
如何管理正常的用户服务
要管理普通用户服务,可以使用带-USER标志的系统ctl命令。-USER标志表示用户正在联系服务管理器,而不是系统。
创建用户特定的服务文件后,第一个关键步骤是重新加载systemd配置文件。
systemctl——user daemon—reload
这将应用这些更改。
要知道服务是否正在运行,请使用systemctl,并带有—user标志和选项。
System ctl--用户状态[服务名称]
管理正常用户服务的其他命令如下所述:
System ctl--用户启动[服务名称]
systemctl——用户启用[service_name]
System ctl--用户停止[服务名称]
System ctl--用户禁用[服务名称]
System ctl--用户重新启动[服务名称]
如何创建具有系统管理员权限的普通用户服务
用户创建了许多服务,但它们需要管理员权限才能运行。这些服务可以通过在[Service]部分添加User指令来创建。
User指令可用于提及运行服务所需权限的用户的名称,例如admin。因此,如果一个普通用户想要创建一个需要管理员权限的服务,那么只需在[Service]部分添加User = admin即可完成这项工作。但是,只要管理员处于活动状态,此服务将保持活动状态。请注意,此服务不能由管理员直接控制。
结论
普通用户也可以创建systemd服务,但必须将其放置在~/. config/systemd/user目录中。只要创建该服务的用户登录,此服务就会运行。这些服务也通过systemctl命令管理,但使用—user标志。它告诉systemd服务正在被用户调用,而不是系统调用。在本指南中,我创建了一个自定义的普通用户服务,并提到了用于管理它的systemctl命令,此外,我还突出了创建需要管理权限的服务的方法。