乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      Systemd 介紹與日常使用

       imnobody2001 2022-05-17 發(fā)布于黑龍江

      Systemd

      Systemd(system daemon)實(shí)現(xiàn)系統(tǒng)服務(wù)間的依賴關(guān)系,并依此實(shí)現(xiàn)系統(tǒng)初始化時(shí)服務(wù)的并行啟動(dòng),同時(shí)達(dá)到降低Shell的系統(tǒng)開(kāi)銷,最終替代init。

      Systemd采用了一下新技術(shù):

      • 采用Socket激活式與總線激活式服務(wù),以提高相互依賴的各服務(wù)的并行運(yùn)行性能。

      • 采用Cgroups替代PID來(lái)追蹤進(jìn)程,即使是兩次fork之后生成的守護(hù)進(jìn)程也不會(huì)脫離systemd的控制。

      Systemd Unit

      學(xué)習(xí)Systemd的第一步,就是搞懂 Unit(單元)是什么?

      Unit就是Systemd的最小 功能/管理 單位,是單個(gè)進(jìn)程的描述。一個(gè)個(gè)小的Unit相互調(diào)用和依賴,組成一個(gè)龐大的任務(wù)管理系統(tǒng),這就是Systemd的基本思想。

      由于Systemd要做到事情太多,導(dǎo)致Unit有很多種不同的類型:

      • Service Unit - 用于定義系統(tǒng)服務(wù)

      • Target Unit - 用于模擬實(shí)現(xiàn)“運(yùn)行級(jí)別”

      • Socket Unit - 用于Systemd監(jiān)聽(tīng)Socket,在有連接的時(shí)候再啟動(dòng)。

      • Device Unit - 用于定義內(nèi)核識(shí)別的設(shè)備

      • Mount Unit - 用于定義文件系統(tǒng)掛載

      • Snapshot Unit - 用于管理系統(tǒng)快照

      • Swap Unit - 用于標(biāo)識(shí)swap設(shè)備

      • Automount Unit - 用于文件系統(tǒng)自動(dòng)掛載

      • Path Unit - 用于定義文件系統(tǒng)中的文件或目錄

      所有的Unit文件都存放在 /usr/lib/systemd/system和/etc/systemd/system

      Service Unit

      • 用于定義為系統(tǒng)服務(wù)。

      • 通常由三部分組成,[Unit] [Service] [Install],各部分釋義:

      復(fù)制代碼
      [Unit] 段的常用選項(xiàng):
         Description:描述信息; 意義性描述;
         After:定義unit的啟動(dòng)次序,表示當(dāng)前unit應(yīng)該晚于哪些unit啟動(dòng);其功能與Before相反;
         Requies:依賴到的其它units;強(qiáng)依賴,被依賴的units無(wú)法激活時(shí),當(dāng)前unit即無(wú)法激活;
         Wants:依賴到的其它units;弱依賴;
         Conflicts:定義units間的沖突關(guān)系
      [Service] 段的常用選項(xiàng):
         Type:用于定義影響ExecStart及相關(guān)參數(shù)的功能的unit進(jìn)程啟動(dòng)類型,其類型有:
            simple:默認(rèn)值,執(zhí)行ExecStart指定的命令,啟動(dòng)主進(jìn)程
            forking:以 fork 方式從父進(jìn)程創(chuàng)建子進(jìn)程,創(chuàng)建后父進(jìn)程會(huì)立即退出
            oneshot:一次性進(jìn)程,Systemd 會(huì)等當(dāng)前服務(wù)退出,再繼續(xù)往下執(zhí)行
            dbus:當(dāng)前服務(wù)通過(guò)D-Bus啟動(dòng)
            notify:當(dāng)前服務(wù)啟動(dòng)完畢,會(huì)通知systemd再繼續(xù)往下執(zhí)行
            idle:若有其他任務(wù)執(zhí)行完畢,當(dāng)前服務(wù)才會(huì)運(yùn)行
         EnvironmentFile:環(huán)境配置文件;
         ExecStart:指明啟動(dòng)unit要運(yùn)行命令或腳本; 
         ExecStartPre:在ExecStart之前運(yùn)行;
           ExecStartPost:在ExecStart之后運(yùn)行;
           ExecReload: 指明重新加載配置的命令或腳本; #示例 ExecReload=/bin/kill -HUP $MAINPID
         ExecStop:指明停止unit要運(yùn)行的命令或腳本;  
         Restart:當(dāng)設(shè)定Restart=1時(shí),則當(dāng)次daemon服務(wù)意外終止后,會(huì)再次自動(dòng)啟動(dòng)。
         
      [Install] 段的常用選項(xiàng):
         Alias:別名,可使用systemctl command Alias.service;
         RequiredBy:被哪些units所依賴;
         WantedBy:被哪些units所依賴
         
      注意:對(duì)于新建或修改unit文件,需要通過(guò)命令 systemctl daemon-reload 重新加載。
      復(fù)制代碼

      Timer Unit

      • 定時(shí)器,可以定時(shí)調(diào)用其他Unit。

      • Service Unit只是定義了如何執(zhí)行任務(wù),還必須通過(guò)Timer Unit定義執(zhí)行時(shí)間,示例:

      復(fù)制代碼
      **定義Timer調(diào)用的my-timer.service **[Unit]
      Description = MyTimer
      
      [Service]
      ExecStart = /bin/echo '...Hello MyTimer...'**定義調(diào)用Service的my-timer.timer**[Unit]
      Description = Runs mytimer every minutes
      
      [Timer]
      OnUnitActiveSec = 1m
      Unit = mytimer.service
      
      [Install]WantedBy = multi-user.target        
      
      
      
      # [Timer] 字段

        OnActiveSec:定時(shí)器生效后,多少時(shí)間開(kāi)始執(zhí)行任務(wù)
        OnBootSec:系統(tǒng)啟動(dòng)后,多少時(shí)間開(kāi)始執(zhí)行任務(wù)
        OnStartupSec:Systemd 進(jìn)程啟動(dòng)后,多少時(shí)間開(kāi)始執(zhí)行任務(wù)
        OnUnitActiveSec:該單元上次執(zhí)行后,等多少時(shí)間再次執(zhí)行
        OnUnitInactiveSec: 定時(shí)器上次關(guān)閉后多少時(shí)間,再次執(zhí)行
        OnCalendar:基于絕對(duì)時(shí)間,而不是相對(duì)時(shí)間執(zhí)行
        AccuracySec:如果因?yàn)楦鞣N原因,任務(wù)必須推遲執(zhí)行,推遲的最大秒數(shù),默認(rèn)是60秒
        Unit:真正要執(zhí)行的任務(wù),默認(rèn)是同名的帶有.service后綴的單元
        Persistent:如果設(shè)置了該字段,即使定時(shí)器到時(shí)沒(méi)有啟動(dòng),也會(huì)自動(dòng)執(zhí)行相應(yīng)的單元
        WakeSystem:如果系統(tǒng)休眠,是否自動(dòng)喚醒系統(tǒng)

      復(fù)制代碼

      Socket Unit

      • 以 '.socket' 為后綴的單元文件, 封裝了一個(gè)用于進(jìn)程間通信的套接字(socket)或管道(FIFO), 以支持基于套接字的啟動(dòng)。

      • 讓Systemd監(jiān)聽(tīng)Socket,在有連接的時(shí)候再啟動(dòng)該Unit,需要同名的Service。

      • 可以查看系統(tǒng)自帶的sshd.socket示例。

      Target Unit

      • Target是指一組相關(guān)進(jìn)程,有點(diǎn)像init進(jìn)程模式下面的啟動(dòng)級(jí)別。

      • 當(dāng)WantedBy設(shè)置為指定target時(shí),執(zhí)行systemctl enable/disable [UnitName]時(shí),會(huì)自動(dòng)創(chuàng)建軟連接到/usr/lib/systemd/system下對(duì)應(yīng)的target.wants目錄中

      • 可以通過(guò) systemctl get-default 查看當(dāng)前運(yùn)行級(jí)別。

      • Target 與 傳統(tǒng) RunLevel 的對(duì)應(yīng)關(guān)系如下:

        • Runlevel 0 == poweroff.target

        • Runlevel 1 == rescue.target

        • Runlevel 2 == multi-user.target

        • Runlevel 3 == multi-user.target

        • Runlevel 4 == multi-user.target

        • Runlevel 5 == graphical.target

        • Runlevel 6 == reboot.target

      Systemd Command

      復(fù)制代碼
      # 查看單元狀態(tài)
      ## active (running): 進(jìn)程持續(xù)的運(yùn)行中
      ## active (exited): 進(jìn)程成功完成一次執(zhí)行
      ## active (waiting): 進(jìn)程等待中
      ## inactive:  未運(yùn)行
      $ systemctl status [UnitName]
      
      # 查看是否已啟用該單元
      ## enable、disable或static
      ## static是指對(duì)應(yīng)的Unit文件中沒(méi)有定義[Install]區(qū)域,因此無(wú)法配置為開(kāi)機(jī)啟動(dòng)服務(wù)。
      $ systemctl is-enabled [UnitName]
      
      # 開(kāi)機(jī)自動(dòng)執(zhí)行該單元
      $ systemctl enable [UnitName]
      
      # 關(guān)閉開(kāi)機(jī)自動(dòng)執(zhí)行
      $ systemctl disable [UnitName]
      
      # 啟動(dòng)單元
      $ systemctl start [UnitName]
      
      # 關(guān)閉單元
      $ systemctl stop [UnitName]
      
      # 重啟單元
      $ systemctl restart [UnitName]
      
      # 重新加載服務(wù)配置,而不中斷服務(wù)
      $ systemctl reload [UnitName]   # 類似于 nginx -s reload
      
      # 殺死單元進(jìn)程
      $ systemctl kill [UnitName]
      
      # 禁止服務(wù),無(wú)法啟動(dòng)或開(kāi)機(jī)啟動(dòng)
      $ systemctl mask [UnitName]
      
      # List units that systemd currently has in memory.     
      $ systemctl list-units
      
      # List unit files installed on the system, in combination with their enablement state (as reported by is-enabled).
      $ systemctl list-unit-files
      
      # Shows units required and wanted by the specified unit.
      $ systemctl list-dependencies
      復(fù)制代碼

      Systemd 架構(gòu)圖

      Systemd官網(wǎng)翻譯:

         http://www./systemd/systemd.index.html

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多