使用systemd的服務配置淺析

使用systemd建立本身的服務

    CentOS 7的服務systemctl腳本存放在:/usr/lib/systemd/,有系統(system)和用戶(user)之分,即:/usr/lib/systemd/system ,/usr/lib/systemd/user。
    每個服務以.service結尾,通常會分爲3部分:[Unit]、[Service]和[Install],就以nginx爲例分析。
nginx

建立service

在/usr/lib/systemd/system下建立nginx.service文件內容以下(也能夠在/usr/lib/systemd/usr下建立):web

[Unit]
Description=nginx - high performance web server
Documentation=http://nginx.org/en/docs/
After=network.target remote-fs.target nss-lookup.target
  
[Service]
Type=forking
PIDFile=/run/nginx.pid
ExecStartPre=/usr/sbin/nginx -t -c /etc/nginx/nginx.conf
ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
  
[Install]
WantedBy=multi-user.target

[Unit]

    Description : 服務的簡單描述。shell

    Documentation : 服務文檔。
socket

    After= : 依賴,僅當依賴的服務啓動以後再啓動自定義的服務單元。 測試

[Service]

  • Type : 啓動類型simple、forking、oneshot、notify、dbus。spa

Type=simple(默認值):systemd認爲該服務將當即啓動。服務進程不會fork。若是該服務要啓動其餘服務,不要使用此類型啓動,除非該 服務是socket激活型。 Type=forking:systemd認爲當該服務進程fork,且父進程退出後服務啓動成功。對於常規的守護進程(daemon),除非你肯定此啓 動方式沒法知足需求,使用此類型啓動便可。使用此啓動類型應同時指定 PIDFile=,以便systemd可以跟蹤服務的主進程。 Type=oneshot:這一選項適用於只執行一項任務、隨後當即退出的服務。可能須要同時設置 RemainAfterExit=yes 使得 systemd 在服務進程退出以後仍然認爲服務處於激活狀態。 Type=notify:與 Type=simple 相同,但約定服務會在就緒後向 systemd 發送一個信號。這一通知的實現由 libsystemd-daemon.so 提供。 Type=dbus:若以此方式啓動,當指定的 BusName 出如今DBus系統總線上時,systemd認爲服務就緒。
  1. PIDFile : pid文件路徑 。.net

  2. ExecStartPre :啓動前要作什麼,上文中是測試配置文件 -t rest

  3. ExecStart:啓動日誌

  4. ExecReload:重載code

  5. ExecStop:中止

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

[Install]

WantedBy:服務安裝的用戶模式,從字面上看,就是想要使用這個服務的有是誰?上文中使用的是:multi-user.target ,就是指想要使用這個服務的目錄是多用戶。「以上全是我的理解,瞎猜的,若有不當,請你們多多指教每個.target其實是連接到咱們單位文件的集合,當咱們執行:

$ sudo systemctl enable nginx.service
 

就會在/etc/systemd/system/multi-user.target.wants/目錄下新建一個/usr/lib/systemd/system/nginx.service 文件的連接。

操做Service:

#啓動服務
$ sudo systemctl start nginx.service
 
#查看日誌
$ sudo journalctl -f -u nginx.service
-- Logs begin at 四 2015-06-25 17:32:20 CST. --
6月 25 10:28:24 Leco.lan systemd[1]: Starting nginx - high performance web server...
6月 25 10:28:24 Leco.lan nginx[7976]: nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
6月 25 10:28:24 Leco.lan nginx[7976]: nginx: configuration file /etc/nginx/nginx.conf test is successful
6月 25 10:28:24 Leco.lan systemd[1]: Started nginx - high performance web server.
 
#重啓
$ sudo systemctl restart nginx.service
 
#重載
$ sudo systemctl reload nginx.service
 
#中止
$ sudo systemctl stop nginx.service
 

systemd科普

科普1:淺析 Linux 初始化 init 系統,Systemd

科普2:Getting Started with systemd

相關文章
相關標籤/搜索