????有時(shí)候遇到服務(wù)器不穩(wěn)定經(jīng)常掛掉的時(shí)候,部署在服務(wù)器上服務(wù)就會(huì)down掉,需要人工手動(dòng)進(jìn)行重啟服務(wù),這是非常麻煩的,也是非常不智能的,同時(shí)極大程度的影響客戶的體驗(yàn),所以這時(shí)我們只需要設(shè)置一個(gè)服務(wù)器自啟的服務(wù)就可以完美的解決這個(gè)問題。
centos7系統(tǒng)參下:
先編寫一個(gè)service文件在/lib/systemd/system/文件夾下(有些根據(jù)系統(tǒng)不同可能是在/usr/lib/systemd/system/),文件格式如下:
vim /lib/systemd/system/test.service
[Unit]
Description=test
After=network.target
[Service]
Type=forking
ExecStart=/root/test.sh
ExecReload=/root/testreload.sh
ExecStop=/root/teststop.sh
PrivateTmp=true
[Install]
WantedBy=multi-user.target
其中他們的字段分別代表了
Description:描述服務(wù)
After:描述服務(wù)類別
[Service]服務(wù)運(yùn)行參數(shù)的設(shè)置
Type=forking是后臺(tái)運(yùn)行的形式
ExecStart為服務(wù)的具體運(yùn)行命令(如果是運(yùn)行腳本文件只需要把sh文件位置寫入就行,如果是啟動(dòng)某些服務(wù),就找到啟動(dòng)服務(wù)的文件位置 然后start ,例如/www/lanmps/init.d/nginx restart)
ExecReload為重啟命令
ExecStop為停止命令
PrivateTmp=True表示給服務(wù)分配獨(dú)立的臨時(shí)空間
然后保存文件如果保存文件顯示權(quán)限不夠,可以切換超級(jí)管理員sudo su,然后進(jìn)行保存文件,賦予文件754的權(quán)限,賦予完成后看是否賦予成功可以通過ll觀察,第一位代表文件類型,然后以三位一組rwx代表當(dāng)前用戶的權(quán)限,r-x代表用戶組的權(quán)限,r--代表其他權(quán)限
賦予權(quán)限之后systemctl enable test.service設(shè)置為開機(jī)自啟,然后可以通過systemctl status nginx.service命令查看這個(gè)service的狀態(tài),這是正常執(zhí)行的
其他命令
systemctl start test.service 啟動(dòng)nginx服務(wù)
systemctl enable?test.service 設(shè)置開機(jī)自啟動(dòng)
systemctl disable?test.service 停止開機(jī)自啟動(dòng)
systemctl status?test.service 查看服務(wù)當(dāng)前狀態(tài)
systemctl restart?test.service 重新啟動(dòng)服務(wù)
systemctl list-units --type=service 查看所有已啟動(dòng)的服務(wù)
如果你設(shè)置自啟之后active為inactive那么就是服務(wù)在等待被執(zhí)行,也是成功的,這時(shí)候你就可以reboot重啟服務(wù)來檢查你是否設(shè)置成功。
centos6.6使用以下方法:
因?yàn)閏entos6是沒有systemctl的(就非常生氣,因?yàn)榭蛻舻木褪莄entos6的)解決centos6的有兩種方法分別是通過chkconfig和設(shè)置rc.local,但是因?yàn)閞c.local這種方法我沒有成功,每次設(shè)置了/etc/rc.d/rc.local文件,一些echo、su命令都可以執(zhí)行但是執(zhí)行java -jar就不知道為什么不行(以后再補(bǔ)上),重啟后還是沒有執(zhí)行(不知道哪里出了問題,弄了一天心態(tài)炸了,以后弄好了再給各位看官補(bǔ)上),所以就不在這進(jìn)行描述了,然后是使用了chkconfig的方式,在/etc/init.d/文件夾下面建一個(gè)sh腳本文件
#!/bin/sh?
#add for chkconfig?
#chkconfig: 2345 70 30?
#description: the description of the shell? #關(guān)于腳本的簡短描述?
#processname: xxxx ? ? ? ? ? ? ? ? ? #第一個(gè)進(jìn)程名,后邊設(shè)置自啟動(dòng)的時(shí)候會(huì)用到?
#下面要啟動(dòng)服務(wù)的命令?
service iptables restart(運(yùn)行系統(tǒng)服務(wù)使用restart)
sh /home/hipay/test.sh(運(yùn)行腳本)
其中chkconfig : 2345 70 30 ,2345代表運(yùn)行級(jí)別
運(yùn)行級(jí)別0:系統(tǒng)停機(jī)狀態(tài),系統(tǒng)默認(rèn)運(yùn)行級(jí)別不能設(shè)為0,否則不能正常啟動(dòng)
運(yùn)行級(jí)別1:單用戶工作狀態(tài),root權(quán)限,用于系統(tǒng)維護(hù),禁止遠(yuǎn)程登陸
運(yùn)行級(jí)別2:多用戶狀態(tài)(沒有NFS)
運(yùn)行級(jí)別3:完全的多用戶狀態(tài)(有NFS),登陸后進(jìn)入控制臺(tái)命令行模式
運(yùn)行級(jí)別4:系統(tǒng)未使用,保留
運(yùn)行級(jí)別5:X11控制臺(tái),登陸后進(jìn)入圖形GUI模式
運(yùn)行級(jí)別6:系統(tǒng)正常關(guān)閉并重啟,默認(rèn)運(yùn)行級(jí)別不能設(shè)為6,否則不能正常啟動(dòng)
70是指腳本將來的啟動(dòng)順序號(hào),如果別的程序的啟動(dòng)順序號(hào)比70小(比如44、45),則腳本需要等這些程序都啟動(dòng)以后才啟動(dòng)。
30是指系統(tǒng)關(guān)閉時(shí),腳本的停止順序號(hào)
然后保存同時(shí)需要給文件添加執(zhí)行權(quán)限chmod +x ./test.sh,再把test.sh添加到chkconfig (chkconfig --add test.sh),使用命令chkconfig查看所有的啟動(dòng)文件。
重啟之后應(yīng)該就ok了!!!
如有問題歡迎評(píng)論指教(0-----0)