centos 7 systemctl

來源:互聯網
上載者:User

標籤: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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.