问题提出场景:装了一个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
就可以了。