之前给seata配置了一个开机启动脚本,但是经常出现启动失败,查询日志要么MySQL没有连接上要么nacos连接不上,原因都是因为服务器重启的时候这两个服务都还没有完全启动,所以正常的做法应该是启动前先等前置服务启动好了再启动seata
直接上脚本
将脚本放在lib/systemd/system目录下,名字就叫seata.service
[Unit]Description=seata
After=mysql.service nacos.service
Requires=mysql.service nacos.service[Service]
Type=forking
ExecStart=/usr/local/seata/bin/seata-server.sh
PrivateTmp=true[Install]
WantedBy=multi-user.target
After 定义启动顺序
Requires 表示指定的服务单元依赖于另一个服务单元,并且在启动或停止时,systemd将确保所依赖的单元也被启动或停止。
Type=forking 是 systemd单元文件中的一个配置项,用于指定服务的启动方式。具体来说,它告诉 systemd 这个服务的主进程是一个 fork 出来的子进程。
WantedBy=default.target 是 systemd 单元文件中的一个配置项,用于指定服务单元关联到哪个 target。在 systemd 中,target 是一个单元的集合,它定义了一组单元的依赖关系。
然后执行下面命令
chmod 754 /lib/systemd/system/seata.service
systemctl daemon-reload
systemctl enable seata.service
systemctl status seata.service
注意,很多时候脚本没有正常启动都可以用systemctl status seata.service查看状态
比如下面这个就是脚本权限不够
这样seata每次就能在服务器重启的时候正常启动了