linux實現(xiàn)開機自啟動服務(wù)或者開機自運行用戶自定義腳本有三種方式
方式一:
執(zhí)行 systemctl enable 服務(wù)名
命令,將對應(yīng)服務(wù)的.service文件軟鏈接到 /etc/systemd/system/multi-user.target.wants/
目錄下
(此種方式一般適用于通過rpm部署的軟件,系統(tǒng)自動創(chuàng)建了對應(yīng)服務(wù)的.service文件這種情形,當(dāng)然我們也可以自己編寫.service文件,然后就可以交給systemctl命令去管理服務(wù),只不過自己編寫較為麻煩)
通過rpm安裝軟件的方式,通常都會在 /usr/lib/systemd/system/
目錄下幫我們創(chuàng)建好.service文件,有了.service文件,我們就可以用systemctl命令去管理我們的服務(wù)。
例如我們通過rpm的方式安裝kong服務(wù),那么安裝過程中會在 /usr/lib/systemd/system/
目錄下幫我們創(chuàng)建kong.service文件,有了kong.service文件,我們就可以通過 systemctl start kong
命令去啟動kong服務(wù),如果對應(yīng)的服務(wù)沒有.service文件,那么用systemctl命令就會提示找不到.service文件。
如果我們要配置kong服務(wù)開機自啟,只需執(zhí)行 systemctl enable kong
命令,系統(tǒng)會自動幫我們把 /etc/systemd/system/multi-user.target.wants/kong.service
軟鏈接到 /etc/systemd/system/multi-user.target.wants/
目錄下,在這個目錄下的服務(wù)都會在開機的時候進(jìn)行自啟動。
另外,有時候我們配置開機自啟動的服務(wù)可能啟動失敗,最大的原因可能是服務(wù)之間有依賴關(guān)系;例如,我們把kong服務(wù)和postgresql服務(wù)都設(shè)置成開機自啟動,由于kong服務(wù)依賴于postgresql服務(wù),因此如果是kong服務(wù)先啟動的話,就會失敗,所以我們應(yīng)該配置一下服務(wù)之間的依賴關(guān)系。
可參考文檔:https://blog.csdn.net/jimmyleeee/article/details/118699167
systemctl命令:
systemctl start kong:啟動kong服務(wù)
systemctl stop kong:停止kong服務(wù)
systemctl status kong:查看kong服務(wù)狀態(tài)
systemctl enable kong:設(shè)置kong服務(wù)開機自啟
systemctl disable kong:關(guān)閉kong服務(wù)開機自啟
方式二:
將自定義的腳本拷貝到 /etc/rc.d/init.d
目錄下,然后使用chkconfig添加服務(wù),就可以實現(xiàn)開機自啟。
方式一我們提到通過rpm安裝軟件的方式,有的會自動幫我們創(chuàng)建對應(yīng)服務(wù).service文件,我們就可以通過systemctl命令來管理服務(wù);但也有的軟件安裝過程會自動幫我們把相關(guān)服務(wù)的啟動腳本創(chuàng)建到 /etc/rc.d/init.d
目錄下,我們就可以通過service命令來管理服務(wù)。并且可以通過 chkconfig 服務(wù)名 on
命令設(shè)置服務(wù)開機自動。
我們也可以使用方式二來配置自定義服務(wù)實現(xiàn)開機自啟,步驟如下:
① 編寫對應(yīng)的shell腳本,賦予可執(zhí)行權(quán)限(注意腳本文件需要兩行注釋,其中一行設(shè)置運行級別和腳本啟動和停止優(yōu)先級的要特別注意)
② 將腳本拷貝到 /etc/rc.d/init.d
目錄下
③ 執(zhí)行 chkconfig add 服務(wù)名
命令添加服務(wù)
④ 執(zhí)行 chkconfig 服務(wù)名 on
命令設(shè)置服務(wù)開機自啟動(這里也可以不用設(shè)置,步驟③就會自動設(shè)置對應(yīng)運行級別的開機自啟)
service命令:
service kong start:啟動kong服務(wù)
service kong stop:停止kong服務(wù)
service kong status:查看kong服務(wù)狀態(tài)
chkconfig命令:
chkconfig --list:列出在/etc/rc.d/init.d目錄下的系統(tǒng)服務(wù)
chkconfig --add 服務(wù)名:添加服務(wù)
chkconfig --del 服務(wù)名:刪除服務(wù)
chkconfig 服務(wù)名 on:設(shè)置服務(wù)開機自啟
chkconfig 服務(wù)名 off:關(guān)閉服務(wù)開機自啟
chkconfig命令可參考文檔:https://blog.csdn.net/u013246459/article/details/52534741/
方式三:
將執(zhí)行用戶自定義腳本的命令寫到 /etc/rc.d/rc.local
文件中
(這種方式適用于將用戶自定義腳本設(shè)置為開機運行,通過這種方式配置的自啟動腳本,會在方式一和方式二執(zhí)行完自啟動服務(wù)后再運行我們的自定義腳本,也就是說,通過這種方式配置的自啟動腳本,會在linux的一些系統(tǒng)服務(wù),比如網(wǎng)絡(luò)network啟動之后才運行我們的腳本)
配置的步驟如下:
① 用戶自定義腳本需要賦予可執(zhí)行權(quán)限:chmod +x kafka_enable_start.sh
② 拷貝到任意路徑下:cp kafka_enable_start.sh /root
③ 使用root用戶執(zhí)行腳本,腳本需要是絕對路徑:echo "su - root -c '/root/kafka_enable_start.sh'" >> /etc/rc.d/rc.local
④ rc.local文件需要賦予可執(zhí)行權(quán)限:chmod +x /etc/rc.d/rc.local
如果我們自己的一些服務(wù),沒有被systemctl管理的,想要設(shè)置成開機自啟動,就可以將對應(yīng)的啟動命令寫成腳本,然后用這種方式進(jìn)行配置。
如果我們自己的一些應(yīng)用服務(wù)之間也有依賴關(guān)系,可以通過在自定義腳本中增加一些邏輯處理;例如我們的報表服務(wù)和api應(yīng)用服務(wù)都需要設(shè)置成開機自啟,并且api服務(wù)依賴于報表服務(wù),那么可以在自定義的腳本里面增加邏輯判斷,當(dāng)報表服務(wù)成功啟動再去啟動api服務(wù),或者是在執(zhí)行了啟動報表服務(wù)的命令之后,sleep一段時間再去執(zhí)行啟動api服務(wù)的命令。
可參考文檔:https://www.cnblogs.com/wucongzhou/p/12588682.html
備注:rc.local的日志內(nèi)容默認(rèn)是 /var/log/boot.log文章來源:http://www.zghlxwxcb.cn/news/detail-464771.html
相關(guān)參考文檔:
https://blog.51cto.com/u_14286115/3326768
https://blog.csdn.net/wang123459/article/details/79063703
https://blog.csdn.net/soonfly/article/details/72876001
https://bbs.huaweicloud.com/blogs/295010
https://blog.csdn.net/weixin_34547317/article/details/116739390
https://blog.csdn.net/qq_15079039/article/details/53291742文章來源地址http://www.zghlxwxcb.cn/news/detail-464771.html
到了這里,關(guān)于linux實現(xiàn)開機自啟動服務(wù)/腳本的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!