Ubuntu18.04添加服务并设置开机启动

问题提出场景:装了一个mycat,想直接设置开机启动

网上一大堆教程,不是你抄我就是我抄你,很多Ubuntu的新特性没搞明白就乱发文章了,没办法只能自己总结经验了;

我这里采用systemctl添加服务的方法

一、Ubuntu18.04的改动

ubuntu-16.10 开始不再使用initd管理系统,改用systemd。用 systemctl 命令来替换了 service 和 chkconfig 的功能。

比如以前启动 mysql 服务用:

sudo service mysql start

现在用:

sudo systemctl start mysqld.service

所以我采用了增加systemd服务的方法;

二、systemctl配置

systemctl service服务文件夹在/lib/systemd/system(基本服务文件夹)与/etc/systemd/system(开机启动文件夹)。先添加基本服务,所以在/lib/systemd/system下创建mycat.service,内容如下:

[Unit]
Description=mycat service

[Service]
Type=forking

ExecStart=/usr/local/mycat/bin/mycat start
ExecReload=/usr/local/mycat/bin/mycat restart
ExecStop=/usr/local/mycat/bin/mycat stop
PrivateTmp=true

[Install]
WantedBy=multi-user.target
Alias=mycat.service

[Unit] 段: 启动顺序与依赖关系,如After=network.target,就说明在network.target服务启动之后。

[Service] 段: 启动行为,如何启动,启动类型,看上面的配置就知道意义了;

[Install] 段: 定义如何安装这个配置文件,即怎样做到开机启动

弄好了上面的配置之后运行如下命令让服务生效,有的时候需要重启电脑才能生效,这是很多教程没提到的情况!

 sudo systemctl daemon-reload

重载后运行sudo systemctl start mycat.service

如果想加到开机启动,就运行

sudo systemctl enable mycat.service

这个时候系统会自动加载mycat.service到/etc/systemd/system文件夹下,很多教程直接自己链接过去,不推荐那么干,因为有的自己链接会出现未知的错误,很难找到原因,容易翻车。

三、运行mycat可能出现的原因

运行sudo systemctl start mycat.service会只出现一个wrapper,而且查看wrapper.log会报错:

这是因为你的wrapper没有配置Java路径,在conf/wrapper.conf里设置

wrapper.java.command=/usr/local/jdk1.8.0_211/bin/java

就可以了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章