centos 7 中的 systemd

來源:互聯網
上載者:User

標籤:des   blog   http   os   io   使用   ar   strong   for   

systemd的服務管理程式

systemctl是最主要的工具。它融合 service 和chkconfig的功能於一體。你可以使用它永久性或只在當前會話中啟用/禁用服務。

下面命令用於列出正在啟動並執行服務或其他: systemctl

更多詳細資料請參考手冊頁(man systemctl)。systemd-cgls以樹形列出正在啟動並執行進程。它可以遞迴顯示給定控制組內容。詳情請參閱systemd-cgls手冊頁。

如何啟動/關閉、啟用/禁用服務?

運行一個服務:

systemctl start foo.service 關閉一個服務:

systemctl stop foo.service 重啟一個服務:

systemctl restart foo.service

顯示一個服務(無論運行與否)的狀態: systemctl status foo.service

在開機時啟用一個服務: systemctl enable foo.service

在開機時禁用一個服務: systemctl disable foo.service

查看服務是否開機啟動: systemctl is-enabled iptables.service;echo $?

修改運行層級:

systemd使用比sysvinit的運行級更為自由的 target 概念作為替代。

第 3 運行級用 multi-user.target替代。第 5 運行級用graphical.target替代。runlevel3.target 和 runlevel5.target 分別是指向 multi-user.target和graphical.target的符號連結。

你可以使用下面的命令切換到“運行級 3 ”:

systemctl isolate multi-user.target (or)

systemctl isolate runlevel3.target

你也可以使用下面的命令切換到“運行級 5 ”:

systemctl isolate graphical.target (or)

systemctl isolate runlevel5.target

如何改變預設運行層級?

systemd使用連結來指向預設的運行層級。在建立新的連結前,你可以通過下面命令刪除存在的連結: rm /etc/systemd/system/default.target

預設切換到運行級 3 :

ln -sf /lib/systemd/system/multi-user.target /etc/systemd/system/default.target

預設切換到運行級 5 :

ln -sf /lib/systemd/system/graphical.target/etc/systemd/system/default.target 

systemd不使用/etc/inittab檔案。 如何查看當下運行層級? 

runlevel命令在systemd下仍然可以工作。你可以繼續使用它,儘管systemd使用 ‘target‘ 概念(多個的 ‘target‘ 可以同時啟用)替換了之前系統的runlevel。

等價的systemd命令是

systemctl list-units --type=target

 

CentOS 7的服務systemctl指令碼存放在:/usr/lib/systemd/,有系統(system)和使用者(user)之分,像需要開機不登陸就能啟動並執行程式,還是存在系統服務裡吧,即:/usr/lib/systemd/system目錄下

每一個服務以.service結尾,一般會分為3部分:[Unit]、[Service]和[Install],我寫的這個服務用於開機運行Node.js項目,具體內容如下:

 

[plain] view plaincopy 
  1. [Unit]  
  2. Description=xiyoulibapi  
  3. After=network.target remote-fs.target nss-lookup.target  
  4.    
  5. [Service]  
  6. Type=forking  
  7. PIDFile=/node.js/pid  
  8. ExecStart=/usr/local/bin/forever start /node.js/xiyoulib/bin/www  
  9. ExecReload=/usr/local/bin/forever restart /node.js/xiyoulib/bin/www  
  10. ExecStop=/usr/local/bin/forever stop /node.js/xiyoulib/bin/www  
  11. PrivateTmp=true  
  12.    
  13. [Install]  
  14. 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 中的 systemd

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.