1. 程式人生 > >CentOS 7 sytemctl 配置及相關命令

CentOS 7 sytemctl 配置及相關命令

文章目錄

systemctl簡介

CentOS 7繼承了RHEL 7的新的特性,例如強大的systemctl,而systemctl的使用也使得系統服務的/etc/init.d的啟動指令碼的方式發生重大改變,也大幅提高了系統服務的執行效率。但服務的配置和以往也發生了極大的不同,變的簡單而易用了許多(仁者見仁)。

systemd提供更優秀的框架以表示系統服務間的依賴關係,實現系統初始化時服務的並行啟動,同時達到降低Shell的系統開銷的效果。
systemd 目標是:儘可能啟動更少程序;儘可能將更多程序並行啟動,systemd儘可能減少對shell指令碼的依賴。

檢視後臺服務

systemctl --type=單位型別,用來過濾單位

alpstudy(root)system systemctl --type=service
UNIT                        LOAD   ACTIVE SUB     DESCRIPTION
  aegis.service               loaded active running LSB: aegis update.
  agentwatch.service          loaded active exited  SYSV: Starts and stops guest
  aliyun.service              loaded active running auto run aliyunservice or ag
  atd.service                 loaded active running Job spooling tools
  auditd.service              loaded active running Security Auditing Service
  cloud-config.service        loaded active exited  Apply the settings specified
  cloud-final.service         loaded active exited  Execute cloud user/final scr
  cloud-init-local.service    loaded active exited  Initial cloud-init job (pre-
  cloud-init-upgrade.service  loaded active exited  cloud-init upgrade service
  cloud-init.service          loaded active exited  Initial cloud-init job (meta
  crond.service               loaded active running Command Scheduler
  dbus.service                loaded active running D-Bus System Message Bus
  
[email protected]
loaded active running Getty on tty1 irqbalance.service loaded active running irqbalance daemon kdump.service loaded active exited Crash recovery kernel arming kmod-static-nodes.service loaded active exited Create list of required stat network.service loaded active running LSB: Bring up/down networkin ntpd.service loaded active running Network Time Service polkit.service loaded active running Authorization Manager ● postfix.service loaded failed failed Postfix Mail Transport Agent redis.service loaded active running Redis persistent key-value d rhel-dmesg.service loaded active exited Dump dmesg to /var/log/dmesg rhel-domainname.service loaded active exited Read and set NIS domainname

服務(service):管理著後臺服務;
掛載(mount)自動掛載(automount):用來掛載檔案系統;
目票(target):執行級別;
套接字(socket):用來建立套接字,並在訪問套接字後,立即利用依賴關係間接地啟動另一單位

開機服務管理

CentOS 7的服務systemctl指令碼存放在:/usr/lib/systemd/,有系統(system)和使用者(user)之分,

/usr/lib/systemd/system/
/usr/lib/systemd/user/

像需要開機不登陸就能執行的程式,存在系統服務,即:/usr/lib/systemd/system/ 目錄下
每一個服務以.service結尾,一般會分為3部分:[Unit]、[Service]、[Install]

[Unit] 主要是對這個服務的說明,內容包括Description和After,Description用於描述服務,After用於描述服務類別

[Service] 是服務的關鍵,是服務的一些具體執行引數的設定,

Type=forking是後臺執行的形式,

PIDFile為存放PID的檔案路徑,

ExecStart為服務的具體執行命令,

ExecReload為重啟命令,

ExecStop為停止命令,

PrivateTmp=True表示給服務分配獨立的臨時空間

注意:[Service]部分的啟動、重啟、停止命令全部要求使用絕對路徑,使用相對路徑則會報錯!

[Install] 是服務安裝的相關設定,可設定為多使用者的

服務指令碼按照上面編寫完成後,以754的許可權儲存在/usr/lib/systemd/system/目錄下,這時就可以利用systemctl進行配置

示例-自定義 mongodb 開機啟動

vim /usr/lib/systemd/system/mongodb.service

[Unit]
Description=mongodb
After=auditd.service systemd-user-sessions.service time-sync.target network.target
 
[Service]  
Type=forking  
PIDFile=/var/run/mongodb/mongod.pid
ExecStart=/root/script/mongo_server_start.sh
ExecStop=/root/script/mongo_server_stop.sh
PrivateTmp=true 
 
[Install]
WantedBy=multi-user.target
[Unit]:服務的說明
Description:描述服務
After:描述服務類別
[Service]服務執行引數的設定
Type=forking是後臺執行的形式
ExecStart為服務的具體執行命令
ExecReload為重啟命令
ExecStop為停止命令
PrivateTmp=True表示給服務分配獨立的臨時空間
注意:[Service]的啟動、重啟、停止命令全部要求使用絕對路徑
[Install]執行級別下服務安裝的相關設定,可設定為多使用者,即系統執行級別為3

systemctl 配置命令

systemctl status mongodb.service            // 檢視mongodb啟動狀態

systemctl start mongodb.service             // 啟動 mongodb

systemctl stop mongodb.service              // 關閉 mongodb

systemctl enable mongodb.service         // 開機啟動 mongodb 服務

systemctl disable mongodb.service         // 開機關閉 mongodb 服務

systemctl list-units --type=service 	    // 檢視所有已啟動的服務

參考資料

  1. CentOS 7 sytemctl
    自定義服務開機啟動