腳本 加入開機啓動

systemd:
    Systemd 是系統啓動和服務器守護進程管理器,負責在系統啓動或運行時,激活系統資源,服務器進程和其它進程。
    特性:
        系統引導時實現服務並行啓動,實現快速開機。
        按需啓動守護進程。
        能自動保存系統狀態快照。
        基於依賴關係定義服務控制邏輯(自動化的服務依賴關係管理)。
        同時採用 socket 式與 D-Bus 總線式激活服務。

    unit:
        表示不同類型的 systemd 對象,unit 由其相關的配置文件進行標識,識別和配置。
        相關文件中主要包含了系統服務,監聽的 socket,保存的快照以及其他與 init 相關的信息。
        這些配置文件主要保存在
          /usr/lib/systemd/system  每個服務最主要的啓動腳本設置,類似於之前的 /etc/init.d/。
          /run/systemd/system      系統執行過程中所產生的服務腳本,比上面目錄優先運行。
          /etc/systemd/system      管理員建立的執行腳本,類似於 /etc/rc.d/rcN.d/Sxx 類的功能,比上面目錄優先運行。

        這三個目錄的配置文件優先級從低到高,如果同一選項三個地方都配置了,優先級高的會覆蓋優先級低的。

        系統安裝時,默認會將 unit 文件放在 /usr/lib/systemd/system 目錄。

    修改系統默認的配置:
        如果我們想要修改系統默認的配置,比如 sshd.service,一般有兩種方法
        1. 在 /etc/systemd/system 目錄下創建 sshd.service 文件,裏面寫上我們自己的配置。
        2. 在 /etc/systemd/system 下面創建 sshd.service 目錄,在目錄裏新建任何以 .conf 結尾的文件,然後寫入自己的配置。推薦這種做法。

    xx.service:
        每一個服務以 .service 結尾,一般會分爲3部分:[Unit]、[Service] 和 [Install]。
        [Unit]
        Description:服務的簡單描述;
        Documentation:服務文檔;
        After:依賴,僅當依賴的服務啓動之後再啓動自定義的服務單元;

        [Service]
        Type:啓動類型 simple、forking、oneshot、notify、dbus;
            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 認爲服務就緒。
        PIDFile:pid 文件路徑;
        ExecStartPre:啓動前要做什麼,比如測試一下配置文件是否正常;
        ExecStart:  啓動;
        ExecReload: 重載;
        ExecStop:   停止;
        PrivateTmp: True 表示給服務分配獨立的臨時空間;
        Environment:指定環境變量,如果不指定,想讓它默認區使用系統環境變量會出錯。格式:Environment='key1=val1' 'key2=val2'
        User:   指定用哪個用戶
        Group:  指定用哪個組

        [Install]
        WantedBy:
            服務安裝的用戶模式,從字面上看,就是想要使用這個服務的是誰? multi-user.target,就是指想要使用這個服務的目錄是多用戶。
            每一個 .target 實際上是鏈接到我們單位文件的集合,當我們執行 systemctl enable sshd.service 時,
            就會在 /etc/systemd/system/multi-user.target.wants/ 目錄下新建一個 /usr/lib/systemd/system/sshd.service 文件的符號鏈接。


腳本加入開機啓動:
    - 創建腳本 demo.sh
      "
      #! /bin/bash
      service firewalld start
      "
    - cd /etc/systemd/system
    - 創建 demo.service
      "
      [Unit]
      Description=demo
      After=network.target

      [Service]
      User=root
      Group=root
      Type=forking

      ExecStart=/home/demo.sh
      # ExecStop=/home/kill-demo.sh
      # ExecReload=/bin/kill -s HUP $MAINPID
      PrivateTmp=true

      [Install]
      WantedBy=multi-user.target
      "
    - 加入開機啓動 systemctl enable demo
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章