systemd添加自定義服務

概述

systemd有系統和用戶區分:nginx

  • 系統(/user/lib/systemd/system/)
  • 用戶(/etc/lib/systemd/user/)
    通常系統管理員手工建立的單元文件建議存放在/etc/systemd/system/目錄下面。

    建立服務文件

    服務文件

    以nginx爲例進行說明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 : 服務的簡單描述
    • Documentation : 服務文檔
    • Before、After:定義啓動順序。Before=xxx.service,表明本服務在xxx.service啓動以前啓動。After=xxx.service,表明本服務在xxx.service以後啓動。
    • Requires:這個單元啓動了,它須要的單元也會被啓動;它須要的單元被中止了,這個單元也中止了。
    • Wants:推薦使用。這個單元啓動了,它須要的單元也會被啓動;它須要的單元被中止了,對本單元沒有影響。
  • [Service]
    • 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認爲服務就緒。
    • Type=idle: systemd會等待全部任務(Jobs)處理完成後,纔開始執行idle類型的單元。除此以外,其餘行爲和Type=simple 相似。
    • PIDFile:pid文件路徑
    • ExecStart:指定啓動單元的命令或者腳本,ExecStartPre和ExecStartPost節指定在ExecStart以前或者以後用戶自定義執行的腳本。
    • Type=oneshot容許指定多個但願順序執行的用戶自定義命令。
    • ExecReload:指定單元中止時執行的命令或者腳本。
    • ExecStop:指定單元中止時執行的命令或者腳本。
    • PrivateTmp:True表示給服務分配獨立的臨時空間
    • Restart:這個選項若是被容許,服務重啓的時候進程會退出,會經過systemctl命令執行清除並重啓的操做。
    • RemainAfterExit:若是設置這個選擇爲真,服務會被認爲是在激活狀態,即便因此的進程已經退出,默認的值爲假,這個選項只有在Type=oneshot時須要被配置。
  • [Install]
    • Alias:爲單元提供一個空間分離的附加名字。
    • RequiredBy:單元被容許運行須要的一系列依賴單元,RequiredBy列表從Require得到依賴信息。
    • WantBy:單元被容許運行須要的弱依賴性單元,Wantby從Want列表得到依賴信息。
    • Also:指出和單元一塊兒安裝或者被協助的單元。
    • DefaultInstance:實例單元的限制,這個選項指定若是單元被容許運行默認的實例。
相關文章
相關標籤/搜索