Linux 以服务的形式设置开机启动

在上一篇日志中,介绍了在 rc.local 中设置开机启动,今天给大家介绍以服务的形式开机启动,大家如果有初步了解 Linux 服务器,可能知道 systemctl enable 的命令,今天就介绍这个。其实在上一篇日志中已经介绍到了,在没有 rc.local 这个文件的时候,我们自己创建了一个 rc-local 的服务。

还是以 kms 这个为例,假设 kms程序的路径是 /root/run/kms,我们在 /etc/systemd/system/ 目录下新建一个叫做 kms.service 的文件,文件填入以下内容:

[Unit]
Description= 
Documentation= 
After=network.target
Wants= 
Requires= 

[Service]
ExecStart=/root/run/kms
ExecStop=
ExecReload=/root/run/kms
Type=forking

[Install]
WantedBy=multi-user.target

文件创建好之后,我们就可以使用 systemctl enable kms.service 来设置开机启动该服务,跳出“Created symlink from /etc/systemd/system/multi-user.target.wants/kms.service to /etc/systemd/system/kms.service.” 说明已经设置成功,当然也可以重启一下,使用 ps -ef | grep kms 看看是不是启动了。

创建 kms 服务,并且设置开机启动。

配置文件参数解释:

After:设置软件启动的优先级,指定在哪个服务启动后再启动,解决软件的依赖性

Wants:弱依赖,这些服务的运行状态可以影响本软件,但不会决定本软件的运行状态

Requires:强依赖,这些服务会决定本软件的运行

ExecStart/ExecStop/ExecReload:分别是运行 systemctl start / system stop / system reload 时执行的命令

Type:软件的运行方式,默认为 simple

注意:

1、配置文件里的参数可以不写,比如 Description 没有,就直接省略掉,但是 [Unit][Service][Install] 这几个关键字不能省略。

2、上面的配置文件中列出的是常见的参数。更详细的参数可以查看参考文档 man systemd.service

3、我没有指定 ExecStop 配置,但是运行 systemctl stop kms 的时候,kms 服务也会退出。

扩展阅读:

systemctl 命令帮助文档

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>