Linux开机自启动文件Servie编写

介绍

systemd service是一种以 .service 结尾的配置文件,是一个专用于 Linux 操作系统的系统与服务管理器。简单来说,用于后台以守护精灵(daemon)的形式运行程序。

示例及配置解释

systemd 服务的内容主要分为三个部分,控制单元 [Unit] 的定义、服务 [Service] 的定义、以及 [Install] 安装部分。

				
					[Unit]
Description=Cloudreve
Documentation=https://docs.com
After=network.target
After=mysqld.service
Wants=network.target

[Service]
WorkingDirectory=/smb/tsg
ExecStart=/smb/tsg
Restart=on-abnormal
RestartSec=5s
KillMode=mixed

[Install]
WantedBy=multi-user.target
				
			
[Unit]
Description服务描述
Documentation指定服务的文档,可以是一个或多个文档的URL路径。
Requires表示依赖于某服务,即某服务停止运行或退出,该服务也必须停止运行。
After表示该服务将在其他服务之后启动。这意味着该服务将在其他服务启动成功后启动。
Before与 After 相反,在启动当前服务后,再启动指定的服务。
Wants表示该服务和某服务存在某种弱依赖关系,即某服务停止运行或退出不影响该服务继续运行。
Conflicts与这个模块有冲突的模块,如果列出模块中有已经在运行的,这个服务就不能启动,反之亦然。
OnFailure当这个模块启动失败时,就自动启动列出的每个模块。
`PartOf表示该服务是另一个服务的一部分。这意味着当该服务启动或停止时,将同时启动或停止其他服务。
[Service]

这个字段主要给出服务的启动行为,如何启动、重启、停止。

Type定义启动类型。它可以设置的值如下
simple(默认值), 类型的服务是最常见的服务类型。这类服务通常是守护进程,在后台运行。
oneshot该类型的服务通常用于执行一次性的任务,例如升级软件。
dbus该类型的服务使用 D-Bus 框架来进行通信。
notify该类型的服务在启动或停止时发送通知。
idle该类型的服务在没有工作时进入空闲状态,以节省资源。
ExecStart定义启动进程时执行的命令。
ExecReload重启服务时执行的命令。
ExecStop停止服务时执行的命令。
ExecStartPre启动服务之前执行的命令。
ExecStartPost启动服务之后执行的命令。
ExecStopPost停止服务之后执行的命令。
KillModeKillMode 字段用于指定如何杀死服务进程。KillMode 字段的值可以是以下几种:
mixed这是默认的 KillMode 值。该模式下,systemd 会先尝试使用 SIGTERM 信号来杀死进程,如果失败,则会使用 SIGKILL 信号。
control-group该模式下,systemd 会杀死进程的控制组中的所有进程。
process只杀主进程。
process没有进程会被杀掉,只是执行服务的 stop 命令。
Restart定义了服务退出后,服务的重启方式。它可以设置的值如下:
no(默认值),退出后不会重启。
on-success只有正常退出时(退出状态码为0),才会重启。
on-failure非正常退出时(退出状态码非0),包括被信号终止和超时,才会重启。
on-abnormal只有被信号终止和超时,才会重启。
on-abort只有在收到没有捕捉到的信号终止时,才会重启。
on-watchdog超时退出,才会重启。
always不管是什么退出原因,总是重启。
RestartSec示重启服务之前,需要等待的秒数。
RootDirectory指定服务进程的根目录,如果配置了这个参数后,服务将无法访问指定目录以外的任何文件。
WorkingDirectory指定服务的工作目录。

通过与谷歌bard的对话感觉这两个目录并没有用呀,设置WorkingDirectory的目录与Execstart为不同目录时,说是先切换到WorkingDirectory目录,然后再切换到Execstart目录。那WorkingDirectory有啥用?

[Install]

用于指定服务的启动目标。Install 字段的值是一个或多个目标,这些目标将决定服务在哪些启动级别下启动。

WantedBy=multi-user.target表示服务将在多用户模式下启动,即在系统启动时运行。

然后将将编写好的service文件存放到/usr/lib/systemd/system下,然后使用systemctl管理服务。

管理服务

systemctl start nginx.service启动nginx服务
systemctl stop nginx.service停止nginx服务
systemctl restart nginx.service重启nginx服务
systemctl status nginx.service查看nginx服务状态
systemctl enable nginx.service设置nginx服务开机启动
systemctl disable nginx.service关闭nginx服务开机启动
0 0 投票数
文章评分
订阅评论
提醒
guest
0 评论
最旧
最新 最多投票
内联反馈
查看所有评论
0
希望看到您的想法,请您发表评论!x