centos7服務管理

http://hongge.blog.51cto.com/linux

服務控制框架

Systemd對linux來講,就是一個init程序,能夠做爲sysVinit和Upstat的替代ssh

RHEL7監視和控制systemd的主要命令是systemctl,該命令能夠用於查看系統狀態和管理系統及服務。socket

RHEL7的服務systemctl腳本存放在:/usr/lib/systemd/,有系統(system)和用戶(user)之分,像須要開機不登錄就能運行的程序,存在系統服務裏,即:/usr/lib/systemd/system目錄下。每個服務以.service結尾,通常會分爲3部分:[Unit]、[Service]和[Install]ide

clip_image002

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

[Service]部分是服務的關鍵,是服務的一些具體運行參數的設置,這裏Type=forking是後臺運行的形式,PIDFile爲存放PID的文件路徑,ExecStart爲服務的具體運行命令,ExecReload爲重載命令,ExecStop爲中止命令,注意:[Service]部分的啓動、重啓、中止命令所有要求使用絕對路徑,使用相對路徑則會報錯!ui

[Install]部分是服務安裝的相關設置,可設置爲多用戶的.3d

注意: 若是服務沒有Install段落,通常意味着應該經過其它服務自動調用它們rest

使用systemd時,可經過正確編寫單元配置文件來解決其依賴關係。典型的狀況是,服務A要求服務B在A啓動以前運行。在此狀況下,向服務A配置文件中的 [Unit] 段添加 Requires=B 和 After=B 便可blog

咱們對service和chkconfig兩個命令都不陌生,RHEL7系統中systemctl 是管制服務的主要工具,它整合了chkconfig 與 service功能於一體。

systemctl命令的基本操做格式是:

systemctl 動做服務名.service

查看一下--help的信息

systemd提供更優秀的框架以表示系統服務間的依賴關係實現系統初始化時服務的並行啓動,同時達到下降Shell的系統開銷的效果,systemd的目標是儘量啓動更少進程;儘量將更多進程並行啓動。

分析系統狀態:

systemctl 或systemctl list-units #輸出激活的單元

systemctl list-units --type=service #列出active狀態的服務

systemctl list-unit-files列出全部已安裝服務

systemctl --failed #顯示啓動失敗的服務

systemd-cgls以樹形列出正在運行的進程

全部可用的單元文件存放在 /usr/lib/systemd/system/ 和 /etc/systemd/system/ 目錄(後者優先級更高)

使用單元:

一個單元能夠是系統服務(.service)、掛載點(.mount)、sockets(.sockets)。

使用 systemctl 控制單元時,一般須要使用單元文件的全名,包括擴展名(例如 sshd.service)。可是有些單元能夠在systemctl中使用簡寫方式。若是無擴展名,systemctl 默認把擴展名看成 .service。例如sshd和sshd.service 是等價的。

掛載點會自動轉化爲相應的 .mount 單元。例如 /home 等價於 home.mount。

設備會自動轉化爲相應的 .device 單元,因此 /dev/sda2 等價於 dev-sda2.device。

systemctl start <單元> #當即啓動單元

systemctl stop <單元> #當即中止單元

systemctl restart <單元> #重啓單元

systemctl reload <單元> #從新讀取單元配置

systemctl status <單元> #輸出單元運行狀態

systemctl is-enabled <單元> #檢查單元是否配置爲自動啓動

systemctl enable <單元> #開機自動啓動單元

systemctl disable <單元> #取消開機自動激活單元

systemctl is-active<單元> #查看單元是否是正在運行

systemctl daemon-reload #從新載入 systemd,掃描新的或有變更的單元

電源管理:

systemctl reboot #重啓

systemctl poweroff #退出系統並中止電源

例如:

systemctl is-enabled iptables.service
systemctl is-enabled servicename.service #查詢服務是否開機啓動
systemctl enable *.service #開機運行服務
systemctl disable *.service #取消開機運行
systemctl start *.service #啓動服務
systemctl stop *.service #中止服務
systemctl restart *.service #重啓服務
systemctl reload *.service #從新加載服務配置文件
systemctl status *.service #查詢服務運行狀態

systemctl mask *.service #禁用指定服務

systemctl unmask *.service #激活指用服務

注:*表明某個服務的名字,如http的服務名爲httpd

案例:

查看服務的情況

clip_image004

中止 sshd服務,查看狀態

clip_image006

狀態表示爲dead服務已經中止。

disable 服務,禁止開機自動運行

clip_image008

開機自動加載,並啓動該服務

clip_image010

經過mask來禁用該服務,這樣一旦服務終止,則沒法再啓動,必須經過unmask解除禁用才能使用systemctl start sshd 來運行服務

clip_image012

除了上面提到的基本功能,systemctl還能夠查詢當前加載的模塊單元,注意後綴爲service的纔是咱們須要管理的服務

clip_image013

能夠經過 type來過濾掉其餘類型的單元

systemctl list-unit-files –type service

http://hongge.blog.51cto.com/

相關文章
相關標籤/搜索