一、chkconfig方式
一般比較老的centos支援chkconfig,其添加步驟比較簡單:
1、在/etc/init.d/目錄下建立一個自定義服務的檔案如:myservice.sh
2、添加下面兩句到 #!/bin/bash 之後。
1 # chkconfig: 2345 10 90
2 # description: myservice
PS:不添加這兩行會報錯:執行chkconfig --add myservice後提示:service myservice does not support chkconfig
PS:其中2345是預設啟動級别,級别有0-6共7個級别
等級0表示:表示關機
等級1表示:單使用者模式
等級2表示:無網絡連接配接的多使用者指令行模式
等級3表示:有網絡連接配接的多使用者指令行模式
等級4表示:不可用
等級5表示:帶圖形界面的多使用者模式
等級6表示:重新啟動
10是啟動優先級,90是停止優先級,優先級範圍是0-100,數字越大,優先級越低。
3、指令
開啟開機自啟動服務:chkconfig myservice on
添加開機自啟動服務:chkconfig --add myservice
檢視開機自啟動服務:chkconfig --list myservice
二、systemctl方式(推薦)
由于chkconfig是Redhat發行版特有的服務配置方式,在基于debian的發行版下原生不支援,是以使用systemctl方式添加自定義系統服務,更具優勢。
systemctl腳本存放在:/usr/lib/systemd/,有系統(system)和使用者(user)之分,需要開機不登陸就能運作的程式,存在系統服務裡,即:/usr/lib/systemd/system目錄下。
systemctl管理的每一個服務以.service結尾,一般會分為3部分:[Unit]、[Service]和[Install]。
[Unit]
主要是對這個服務的說明,内容包括Description和After,Description 用于描述服務,After用于描述服務類别
[Service]
Type=simple(預設值):systemd認為該服務将立即啟動。服務程序不會fork。如果該服務要啟動其他服務,不要使用此類型啟動,除非該服務是socket激活型。
Type=forking:systemd認為當該服務程序fork,且父程序退出後服務啟動成功。對于正常的守護程序(daemon),除非你确定此啟動方式無法滿足需求,使用此類型啟動即可。使用此啟動類型應同時指定 PIDFile=,以便systemd能夠跟蹤服務的主程序。
Type=oneshot:這一選項适用于隻執行一項任務、随後立即退出的服務。可能需要同時設定 RemainAfterExit=yes 使得 systemd 在服務程序退出之後仍然認為服務處于激活狀态。
Type=notify:與 Type=simple 相同,但約定服務會在就緒後向 systemd 發送一個信号。這一通知的實作由 libsystemd-daemon.so 提供。
Type=dbus:若以此方式啟動,當指定的 BusName 出現在DBus系統總線上時,systemd認為服務就緒。
Type=idle: systemd會等待所有任務(Jobs)處理完成後,才開始執行idle類型的單元。除此之外,其他行為和Type=simple 類似。
PIDFile:pid檔案路徑
ExecStart:指定啟動單元的指令或者腳本,ExecStartPre和ExecStartPost節指定在ExecStart之前或者之後使用者自定義執行的腳本。Type=oneshot允許指定多個希望順序執行的使用者自定義指令。
ExecReload:指定單元停止時執行的指令或者腳本。
ExecStop:指定單元停止時執行的指令或者腳本。
PrivateTmp:True表示給服務配置設定獨立的臨時空間
Restart:這個選項如果被允許,服務重新開機的時候程序會退出,會通過systemctl指令執行清除并重新開機的操作。
RemainAfterExit:如果設定這個選擇為真,服務會被認為是在激活狀态,即使是以的程序已經退出,預設的值為假,這個選項隻有在Type=oneshot時需要被配置。
注意:[Service]部分的啟動、重新開機、停止指令全部要求使用絕對路徑,使用相對路徑則會報錯!
[Install]
服務安裝的相關設定,可設定為多使用者的
範例:
1 [Unit]
2 Description=myservice
3 After=myservice.service
4
5 [Service]
6 Type=oneshot
7 RemainAfterExit=yes
8 ExecStart=/opt/myservice/start.sh
9 ExecReload=
10 ExecStop=/opt/myservice/stop.sh
11
12 [Install]
13 WantedBy=multi-user.target
腳本授權:chmod 755 /usr/lib/systemd/system/myservice.service
開機啟動:systemctl enable myservice.service
至此,每次開機都會執行/opt/myservice/start.sh,每次關機都會執行/opt/myservice/stop.sh。
三、chkconfig與systemctl指令對照表

PS:此表僅為指令對照,在chkconfig下配置的服務,是不能使用systemctl運作的!當然如果同時安裝配置了兩種方式的服務,肯定是都能用的。