关于Linux Systemd.service自定义系统服务,实现开机启动sharding-proxy

最近测试环境服务器,重启后发现有一些没有通过Docker安装的中间件,在启动后没有起起来,于是乎就自己写了一个linux系统服务,好了,废话不多说,直接上内容,这里我们以sharding-proxy为例:

创建Linux服务文件

vim /lib/systemd/system/shardingsphere.service
其中/lib/systemd/system目录是linux系统存放服务的地方,后面的是自定义服务文件名

[Unit]
Description=shardingsphere
After=network.target

[Service]
Type=forking
ExecStart=/home/sharding-proxy-4.0.0-RC1/bin/start.sh 8066
ExecReload=/home/sharding-proxy-4.0.0-RC1/bin/stop.sh
ExecStop=/home/sharding-proxy-4.0.0-RC1/bin/stop.sh
PrivateTmp=true

[Install]
WantedBy=multi-user.target

此文件由三部分组成:

[Unit]

[Unit]主要是为了解决依赖关系。常见的添加Requires、After,如果这个依赖是可选的,那么是Wants、After。依赖关系通常被用在服务(service)而不是(target)上,所以上述的httpd所依赖的仅仅是一些target,因而也就没有Requires和Wants出现。

[Service]

不同的服务启动方式,启动方式通过Type参数进行设置。
Type=simple(默认值):systemd认为该服务将立即启动。服务进程不会fork。如果该服务要启动其他服务,不要使用此类型启动,除非该服务是socket激活型。

Type=forking:systemd认为当该服务进程fork,且父进程退出后服务启动成功。对于常规的守护进程(daemon),除非你确定此启动方式无法满足需求,使用此类型启动即可。使用此启动类型应同时指定 PIDFile=,以便systemd能够跟踪服务的主进程。

Type=oneshot:这一选项适用于只执行一项任务、随后立即退出的服务。可能需要同时设置 RemainAfterExit=yes 使得 systemd 在服务进程退出之后仍然认为服务处于激活状态。

Type=notify:与 Type=simple 相同,但约定服务会在就绪后向 systemd 发送一个信号。这一通知的实现由 libsystemd-daemon.so 提供。

Type=dbus:若以此方式启动,当指定的 BusName 出现在DBus系统总线上时,systemd认为服务就绪。

[Install]

这个段的内容服务的安装信息。它不在 systemd 的运行期间使用。只在使用 systemctl enable 和 systemctl disable 命令启用/禁用服务时有用。

Alias:在安装使用应该使用的额外名字(即别名)。名字必须和服务本身有同样的后缀(即同样的类型)。这个选项可以指定多次,所有的名字都起作用,当执行 systemctl enable 命令时,会建立相当的链接。

WantedBy、RequiredBy:在 .wants/ 或 .requires/ 子目录中为服务建立相应的链接。这样做的效果是当列表中的服务启动,本服务也会启动。 在  bar.service 中的 WantedBy=foo.service  和 Alias=foo.service.wants/bar.service 基本是一个意思。

Also:当此服务安装时同时需要安装的附加服务。 如果用户请求安装的服务中配置了此项,则 systemctl enable 命令执行时会自动安装本项所指定的服务。
在 [Install] 段使用这些字符串有特定含义: %n, %N, %p, %i, %U, %u, %m, %H, %b. 详细信息请看:https://www.cnblogs.com/zhouhbing/p/4021635.html。

开机自启

systemctl start shardingsphere.service       	###启动
systemctl enable shardingsphere.service       	###开机自启
systemctl stop shardingsphere.service       	###停止

参考

systemd服务内容详解: https://www.cnblogs.com/zhouhbing/p/4021635.html
systemd.service:https://www.freedesktop.org/software/systemd/man/systemd.service.html
好了以上就是本文的全部内容。

发布了17 篇原创文章 · 获赞 11 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/weixin_38652136/article/details/95207582