問題提出場景:裝了一個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
就可以了。