在上一篇日志中,介绍了在 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
看看是不是启动了。
配置文件参数解释:
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 服务也会退出。
扩展阅读: