標籤:use 系統管理 kill stop 混合 守護 blank mysql rhel 7
Linux Systemctl是一個系統管理守護進程、工具和庫的集合,用於取代System V、service和chkconfig命令,初始進程主要負責控制systemd系統和服務管理員。通過Systemctl –help可以看到該命令主要分為:查詢或發送控制命令給systemd服務,嵌入式管理單元服務的命令,服務檔案的相關命令,任務、環境、快照相關命令,systemd服務的配置重載,系統開機關機相關的命令。
1. 列出所有可用單元
# systemctl list-unit-files
2. 列出所有運行中單元
# systemctl list-units
3. 列出所有失敗單元
# systemctl –failed
4. 檢查某個單元(如 crond.service)是否啟用
# systemctl is-enabled crond.service
5. 列出所有服務
# systemctl list-unit-files –type=service
6. Linux中如何啟動、重啟、停止、重載服務以及檢查服務(如 httpd.service)狀態
# systemctl start httpd.service
# systemctl restart httpd.service
# systemctl stop httpd.service
# systemctl reload httpd.service
# systemctl status httpd.service
注意:當我們使用systemctl的start,restart,stop和reload命令時,終端不會輸出任何內容,只有status命令可以列印輸出。
7. 如何啟用服務並在開機時啟用或禁用服務(即系統啟動時自動啟動mysql.service服務)
# systemctl is-active mysql.service
# systemctl enable mysql.service
# systemctl disable mysql.service
8. 如何屏蔽(讓它不能啟動)或顯示服務(如ntpdate.service)
# systemctl mask ntpdate.service
ln -s ‘/dev/null”/etc/systemd/system/ntpdate.service’
# systemctl unmask ntpdate.service
rm ‘/etc/systemd/system/ntpdate.service’
9. 使用systemctl命令殺死服務
# systemctl kill crond
10. 列出所有系統掛載點
# systemctl list-unit-files –type=mount
11. 掛載、卸載、重新掛載、重載系統掛載點並檢查系統中掛載點狀態
# systemctl start tmp.mount
# systemctl stop tmp.mount
# systemctl restart tmp.mount
# systemctl reload tmp.mount
# systemctl status tmp.mount
12. 在啟動時啟用、啟用或禁用掛載點(系統啟動時自動掛載)
# systemctl is-active tmp.mount
# systemctl enable tmp.mount
# systemctl disable tmp.mount
13. 在Linux中屏蔽(讓它不能啟用)或可見掛載點
# systemctl mask tmp.mount
ln -s ‘/dev/null”/etc/systemd/system/tmp.mount’
# systemctl unmask tmp.mount
rm ‘/etc/systemd/system/tmp.mount’
14. 列出所有可用系統套介面
# systemctl list-unit-files –type=socket
15. 檢查某個服務的所有配置細節
# systemctl show mysql
16. 擷取某個服務(httpd)的依賴性列表
# systemctl list-dependencies httpd.service
17. 啟動救援模式
# systemctl rescue
18. 進入緊急模式
# systemctl emergency
19. 列出當前使用的運行等級
# systemctl get-default
20. 啟動運行等級5,即圖形模式
# systemctl isolate runlevel5.target
或
# systemctl isolate graphical.target
21. 啟動運行等級3,即多使用者模式(命令列)
# systemctl isolate runlevel3.target
或
# systemctl isolate multiuser.target
22. 設定多使用者模式或圖形模式為預設運行等級
# systemctl set-default runlevel3.target
# systemctl set-default runlevel5.target
23. 重啟、停止、掛起、休眠系統或使系統進入交互式睡眠
# systemctl reboot
# systemctl halt
# systemctl suspend
# systemctl hibernate
# systemctl hybrid-sleep
對於不知運行等級為何物的人,說明如下。
Runlevel 0 : 關閉系統
Runlevel 1 : 救援,維護模式
Runlevel 3 : 多使用者,無圖形系統
Runlevel 4 : 多使用者,無圖形系統
Runlevel 5 : 多使用者,圖形化系統
Runlevel 6 : 關閉並重啟機器
CentOS 7繼承了RHEL 7的新的特性,例如強大的systemctl,而systemctl的使用也使得以往系統服務的/etc/init.d的啟動指令碼的方式就此改變,也大幅提高了系統服務的運行效率。但服務的配置和以往也發生了極大的不同,說實在的,變的簡單而易用了許多。
下面我們以利用forever來實現Node.js項目自啟動為例,初探CentOS 7的systemctl。
前提:Node.js環境已配置成功,forever包安裝成功,有一個能跑的Node.js程式。
CentOS 7的服務systemctl指令碼存放在:/usr/lib/systemd/,有系統(system)和使用者(user)之分,像需要開機不登陸就能啟動並執行程式,還是存在系統服務裡吧,即:/usr/lib/systemd/system目錄下
每一個服務以.service結尾,一般會分為3部分:[Unit]、[Service]和[Install],我寫的這個服務用於開機運行Node.js項目,具體內容如下:
[Unit]
Description=xiyoulibapi
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
PIDFile=/node.js/pid
ExecStart=/usr/local/bin/forever start /node.js/xiyoulib/bin/www
ExecReload=/usr/local/bin/forever restart /node.js/xiyoulib/bin/www
ExecStop=/usr/local/bin/forever stop /node.js/xiyoulib/bin/www
PrivateTmp=true
[Install]
WantedBy=multi-user.target
[Unit]部分主要是對這個服務的說明,內容包括Description和After,Description用於描述服務,After用於描述服務類別
[Service]部分是服務的關鍵,是服務的一些具體運行參數的設定,這裡Type=forking是後台啟動並執行形式,PIDFile為存放PID的檔案路徑,ExecStart為服務的具體運行命令,ExecReload為重啟命令,ExecStop為停止命令,PrivateTmp=True表示給服務分配獨立的臨時空間,注意:[Service]部分的啟動、重啟、停止命令全部要求使用絕對路徑,使用相對路徑則會報錯!
[Install]部分是服務安裝的相關設定,可設定為多使用者的
服務指令碼按照上面編寫完成後,以754的許可權儲存在/usr/lib/systemd/system目錄下,這時就可以利用systemctl進行配置了
首先,使用systemctl start [服務名(也是檔案名稱)]可測試服務是否可以成功運行,如果不能運行則可以使用systemctl status [服務名(也是檔案名稱)]查看錯誤資訊和其他服務資訊,然後根據報錯進行修改,直到可以start,如果不放心還可以測試restart和stop命令。
接著,只要使用systemctl enable xxxxx就可以將所編寫的服務添加至開機啟動即可。
我的指令碼編寫方法參照了nginx的編寫方法,也可以根據其他功能類似的程式。
這樣看來,雖然systemctl比較陌生,但是其實比init.d那種方式簡單不少,而且使用簡單,systemctl能簡化的操作還有很多,現在也有不少的資料,看來RHEL/CentOS比其他的Linux發行版還是比較先進的,此次更新也終於捨棄了Linux 2.6核心,無論是速度還是穩定性都提升不少。
centos 7 systemctl