久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

利用systemd來管理服務(wù)

 阿青哥Joe 2018-06-28
1.1 簡介
   systemd是linux系統(tǒng)的系統(tǒng)和服務(wù)管理器,,它兼容之前的SysV init腳本,并提供一系列的其他特色:啟動(dòng)時(shí)系統(tǒng)服務(wù)的并行啟動(dòng)、按需啟動(dòng)服務(wù)、支持系統(tǒng)狀態(tài)快照,、基于服務(wù)依賴的控制邏輯。
   systemd引入systemd units概念,,這些units是通過一些配置文件代表的,。以下列出所有的systemd units類型:
Unit Type            File Extension          Description
------------------------------------------------------------------
Service unit         .service               系統(tǒng)服務(wù)
Target unit          .target                一組systemd units
Automount unit  .automount              文件系統(tǒng)的自動(dòng)掛載點(diǎn)
-------------------------------------------------------------------
Device unit          .device                由內(nèi)核識別的設(shè)備文件
Mount unit          .mount                文件系統(tǒng)掛載點(diǎn)
Path unit              .path                 文件系統(tǒng)中的文件或者目錄
-------------------------------------------------------------------
Scope unit          .scope                 外部創(chuàng)建的進(jìn)程
Slice unit             .slice            一組管理系統(tǒng)進(jìn)程的分級組織的units
Snapshot unit     .snapshot               存儲(chǔ)的系統(tǒng)管理器狀態(tài)
Socket unit         .socket                 進(jìn)程間通信套接字
-------------------------------------------------------------------
Swap unit            .swap                 交換設(shè)備或者文件
Timer unit           .timer                systemd定時(shí)器
Systemd unit存儲(chǔ)位置:
文件夾             描述
/usr/lib/systemd/system/ 利用RPM包安裝的軟件產(chǎn)生的Systemd unit
/run/systemd/system/   運(yùn)行時(shí)產(chǎn)生的Systemd units,該文件夾優(yōu)先于directory with installed service units
/etc/systemd/system/   系統(tǒng)管理員創(chuàng)造的systemd units,,該文件夾優(yōu)先于運(yùn)行時(shí)units

1.1.1 主要特點(diǎn)
   也就是以上列出的系統(tǒng)支持的unit類型對應(yīng)的啟動(dòng)特點(diǎn),。
1.1.2 兼容性
    systemd對于runlevels的支持是比較局限的。它僅提供一些target units文件,,這些文件可以對應(yīng)runlevels中的運(yùn)行級別,。但是,并不是所有的運(yùn)行級別都能一一對應(yīng),因此盡管可以用runlevel命令,,但并不建議這么做,。
    systemctl工具并不支持定制命令,這在SysV int啟動(dòng)腳本中是可以的,。systemctl工具并不能與非systemd啟動(dòng)的服務(wù)進(jìn)行交流,當(dāng)用systemd啟動(dòng)一個(gè)系統(tǒng)服務(wù)時(shí),,它會(huì)存儲(chǔ)該服務(wù)主要進(jìn)程的ID并跟蹤,,systemctl利用這個(gè)PID來管理這個(gè)服務(wù),而當(dāng)用戶在命令行直接啟動(dòng)一個(gè)服務(wù)時(shí),,systemctl并不能判斷該服務(wù)的狀態(tài)也不能停止該服務(wù),。
    系統(tǒng)服務(wù)并不能從標(biāo)準(zhǔn)輸入讀取信息,當(dāng)systemd啟動(dòng)一個(gè)服務(wù),,它會(huì)把該服務(wù)的標(biāo)準(zhǔn)輸入連接到/dev/null來防止與用戶直接交流,。
    系統(tǒng)服務(wù)并不能從用戶以及他們的對話中繼承任何環(huán)境(包括HOME、PATH等環(huán)境變量),,每一個(gè)服務(wù)都運(yùn)行在新的執(zhí)行環(huán)境中,。
    所有針對服務(wù)的操作都遵守默認(rèn)5min的超時(shí),以防服務(wù)發(fā)生問題導(dǎo)致系統(tǒng)死機(jī),。

1.2 管理系統(tǒng)服務(wù)
    早期版本的RHEL采用SysV init或Upstart,,利用/etc/rc.d/init.d/文件夾中的啟動(dòng)腳本,這些啟動(dòng)腳本通常是bash腳本,,并且允許管理員控制服務(wù)的狀態(tài),。在systemd控制的系統(tǒng)中,這些啟動(dòng)腳本被service units替代,。
    以.service后綴的系統(tǒng)units與啟動(dòng)腳本完成相似的功能,,為了view、start,、stop,、restart、enable,、disable一項(xiàng)系統(tǒng)服務(wù),,可以用systemctl命令。當(dāng)然之前的service和chkconfig命令也是可用的,,但是不建議使用,。
    為了清晰明了,該部分采用全名(帶有.service后綴):
        systemctl stop bluetooth.service            
    當(dāng)處理系統(tǒng)服務(wù)時(shí),,允許省略文件后綴:systemctl工具當(dāng)面對一個(gè)沒有后綴的unit時(shí),,會(huì)默認(rèn)其為service unit,因此上一個(gè)命令與下面的等價(jià)
   systemctl stop bluetooth
   systemctl start name.service             啟動(dòng)服務(wù)
   systemctl stop name.service              關(guān)閉服務(wù)
   systemctl restart name.service            重啟服務(wù)
   systemctl try-restart name.service         當(dāng)系統(tǒng)運(yùn)行狀態(tài)則重啟該服務(wù)
   systemctl reload name.service                重新加載配置
   systemctl status name.service                判斷服務(wù)狀態(tài)
   systemctl is-active name.servie                判斷服務(wù)是否在運(yùn)行
   systemctl list-units --type service --all    列出所有服務(wù)的狀態(tài)
    
   systemctl enable name.service               開機(jī)自啟一項(xiàng)服務(wù)
   systemctl disable name.service                關(guān)閉開機(jī)自啟一項(xiàng)服務(wù)
   systemctl is-enabled name.service            判斷該服務(wù)是否enabled
   systemctl list-unit-files --type service    列出所有的服務(wù),并判斷其是否enabled
   systemctl list-dependencies --after            列出特定unit啟動(dòng)之前需要啟動(dòng)的服務(wù)
   systemctl list-dependencies --before        列出特定unit啟動(dòng)之后才啟動(dòng)的服務(wù)
1.2.1 列出服務(wù)
    為了列出目前所有的service units,,用以下命令:
    systemctl list-units --type service
    默認(rèn)情況下,,systemctl list-units命令示出活動(dòng)的units,如果想要列出任何狀態(tài)的units,,用以下命令:
    systemctl list-units --type service --all
    列出所有安裝的服務(wù)以及它們的enable狀態(tài)
    systemctl list-unit-files --type service    
1.2.2 顯示服務(wù)狀態(tài)
    利用systemctl status name.service 會(huì)列出如下字段信息:
    Loaded         關(guān)于該系統(tǒng)服務(wù)unit是否已加載,、unit文件的絕對路徑、該unit是否時(shí)enabled狀態(tài)
    Active        顯示該服務(wù)是否在運(yùn)行,,并在其后有一個(gè)時(shí)間
    Main PID    相應(yīng)系統(tǒng)服務(wù)的名字以及其PID
    Status         相應(yīng)系統(tǒng)服務(wù)的額外信息
    Process        相應(yīng)進(jìn)程的額外信息
    CGroup        相關(guān)控制組(cgroups)的額外信息
1.2.3  啟動(dòng)一項(xiàng)服務(wù)
    systemctl start name.service
     |
     |
1.2.6  自啟一項(xiàng)服務(wù)
    為了是Apache HTTP 服務(wù)器在開機(jī)時(shí)自啟,,可以用root用戶運(yùn)行如下命令
    systemctl enable httpd.service
    ln -s '/usr/lib/systemd/system/httpd.service' '/etc/systemd/system/multi-user.target.wants/httpd.service'    
1.2.7  取消服務(wù)開機(jī)自啟
    systemctl disable name.service
    該命令會(huì)把/usr/lib/systemd/system/name.service在/etc/systemd/system/文件夾以及其子文件夾中的鏈接刪除。此外,,你還可以通過mask來掩蔽一項(xiàng)服務(wù),,從而使其不能自啟或由其它服務(wù)啟動(dòng):
    systemctl mask name.service
    該命令會(huì)把/etc/systemd/system/name.service這一文件替換為指向/dev/null的鏈接,若想取消:
   systemctl unmask name.service
    
1.3  Systemd targets
    systemd targets通過target units代表,,其具有.target后綴,,target存在的唯一目的就是通過一系列依賴性集合其它的systemd units。例如,,graphical.target unit就是用來開啟圖形會(huì)話,,啟動(dòng)諸如gdm.service,accounts-daemon.service的服務(wù),且激活multi-user.target unit
    runlevel0.target,poweroff.target                  關(guān)機(jī)
    runlevel1.target,rescue.target                    拯救模式,,單用戶模式
    runlevel2.target,multi-user.target                字符界面多用戶
    runlevel3.target,multi-user.target                字符界面多用戶
    runlevel4.target,multi-user.target                字符界面多用戶
    runlevel5.target,graphical.target                圖形界面多用戶
    runlevel6.target,reboot.target                    重啟

1.3.1 查看默認(rèn)target
    systemctl get-default
    該命令查看/etc/systemd/system/default.target這一鏈接指向,。
1.3.2 查看目前target
    以下命令查看當(dāng)前系統(tǒng)加載的target units:
    systemctl list-units --type target    
1.3.3 改變默認(rèn)target
    systemctl set-default name.target
1.3.4 改變目前target
    systemctl isolate name.target
            這一命令會(huì)啟動(dòng)name.target需要的所有服務(wù),并終止所有不需要的服務(wù),。
        1.3.5 改變到拯救模式
            systemctl rescue
            這一命令與systemctl isolate rescue.target基本相同,,但是它會(huì)向目前登陸用戶發(fā)送信息,要想阻止信息發(fā)送,,可以用如下命令:
            systemctl --no-wall rescue
        1.3.6 改變到救急模式
            systemctl emergency
            與拯救模式類似,,也會(huì)在進(jìn)入前向登陸用戶發(fā)送信息,也可以通過以下方式阻止信息發(fā)送:
            systemctl --no-wall emergency
    1.4  關(guān)機(jī),、休眠,、睡眠
        systemctl halt            關(guān)機(jī)
        systemctl poweroff        關(guān)機(jī)斷電
        systemctl reboot        重啟
        systemctl suspend        掛起
        systemctl hibernate        休眠
        systemctl hybrid-sleep    休眠并掛起
    shutdown命令:
        為了在一個(gè)特定的時(shí)間關(guān)機(jī)并對機(jī)器斷電,,可以用如下格式的命令:
            shutdown --poweroff hh:mm (hh:mm為24小時(shí)制時(shí)間格式)
        當(dāng)然也可以用:
            shutdown --poweroff +m     在m分鐘后關(guān)機(jī)
        如果想要取消關(guān)機(jī),,可以用:
            shutdown -c    
    1.5  在遠(yuǎn)程設(shè)備上操控systemd
        除了可以在本機(jī)對systemd系統(tǒng)進(jìn)行控制外,其還允許你通過SSH協(xié)議連接到遠(yuǎn)程電腦上進(jìn)行操控,。但是遠(yuǎn)程主機(jī)必須得運(yùn)行sshd服務(wù),,你可以通過如下命令連接到該主機(jī)上:
            systemctl --host user_name@host_name command
        除了前面部分需要加上--host user_name@host_name外,command是相同的
    1.6  創(chuàng)建,、修改Systemd unit文件
        Unit file具有如下形式:
            unit_name.type_extension
        文件結(jié)構(gòu): [Unit]        描述與unit類型無關(guān)的信息,、對其它units的依賴
                   [unit type]   關(guān)于該unit類型的指引
                   [Install]     包含systemctl安裝命令(enable/disable)
            [Unit] Section:
                Description      針對該unit的描述,,該段文字會(huì)在systemctl status命令中顯示
                Documentation     提供關(guān)于該unit的幫助文檔URIs
                After             定義unit啟動(dòng)順序,該unit會(huì)在該字段定義的unit啟動(dòng)后才啟動(dòng)
                Requires         配置依賴的服務(wù),,這里列出的unit會(huì)同時(shí)啟動(dòng)
                Wants             要求比Requires要若
                Conflicts         沖突的units
            [Service] Section:
                Type    
                    simple  默認(rèn)值,;
                    forking 該進(jìn)程啟動(dòng)后會(huì)產(chǎn)生一個(gè)子程序并成為服務(wù)的主進(jìn)程,父進(jìn)程隨之退出
                    oneshot    與simple相似,,但是該進(jìn)程會(huì)在后面的unit啟動(dòng)前關(guān)閉
                    dbus    
                    notify  隨后的units僅會(huì)在sd_notify()發(fā)送通知信息后啟動(dòng)
                    idle
                ExecStart    指定unit啟動(dòng)后執(zhí)行的命令或腳本
                ExecStop    指定unit結(jié)束后執(zhí)行的命令或腳本
                ExecReload    指定unit重啟后執(zhí)行的命令或腳本
                Restart        當(dāng)該項(xiàng)enabled,,則當(dāng)進(jìn)程退出后會(huì)重啟,當(dāng)然通過systemctl命令停止并不會(huì)重啟
                RemainAfterExit        如果為True,,當(dāng)它退出后仍會(huì)認(rèn)為是活動(dòng)的,;默認(rèn)值為false,該字段對Type=oneshot很有用
            [Install] Section
                Alias        提供該unit的別名,,不同別名通過空格間隔
                RequiredBy    依賴該unit的units
                WantedBy    弱依賴units
                Also        指定會(huì)隨同該unit安裝或卸載的units                    
        1.6.2 創(chuàng)建自定義unit文件
            (1)準(zhǔn)備一個(gè)可執(zhí)行的自定義服務(wù),可以是一個(gè)腳本也可以是一個(gè)可執(zhí)行程序,。如果必須的話,,準(zhǔn)備一個(gè)包含該服務(wù)PID的PID文件。也可能會(huì)需要environment文件來儲(chǔ)存該服務(wù)用到的shell變量,。并確認(rèn)該腳本是可執(zhí)行的(chmod a+x)并且是非交互的,。
            (2)在/etc/systemd/system/文件夾下創(chuàng)建一個(gè)unit文件,并確認(rèn)文件權(quán)限是正確的:
                    touch /etc/systemd/system/name.service
                    chmod 664 /etc/systemd/system/name.service
             (3) 打開該name.service文件并加入配置選項(xiàng),。下面是一個(gè)網(wǎng)絡(luò)相關(guān)的服務(wù)的例子:
                    [Unit]
                    Description=service_description
                    After=network.target
                    
                    [Service]
                    ExecStart=path_to_executable
                    Type=forking
                    PIDFile=path_to_pidfile

                    [Install]
                    WantedBy=default.target
             (4) 通知systemd有一個(gè)新的name.service文件存在,,運(yùn)行如下命令:
                    systemctl daemon-reload
                    systemctl start name.service
        1.6.3 把SysV Init腳本轉(zhuǎn)變?yōu)閡nit文件
            需要作復(fù)雜的變換:找到服務(wù)描述、服務(wù)依賴,、默認(rèn)target,、服務(wù)所用到的文件,這些過程比較復(fù)雜,,需要對啟動(dòng)腳本中的目的明確才行,。
        1.6.4 修改現(xiàn)有的unit文件
            安裝的服務(wù)的默認(rèn)unit文件一般儲(chǔ)存在/usr/lib/systemd/system/文件夾下,系統(tǒng)管理員不應(yīng)該直接修改這些文件,;任何自定義都要在/etc/systemd/system/文件夾下進(jìn)行,,根據(jù)所需要修改的程序,選擇以下方法中的一種即可:
                > 在/etc/systemd/system/unit.d/下建立一個(gè)文件夾,,這也是對大多數(shù)情況建議使用的方法,。這種方法允許對默認(rèn)配置增加額外的功能,而且能夠保持原來的unit文件,。
                > 在/etc/systemd/system下拷貝/usr/lib/systemd/system中初始的unit文件,。這一拷貝將會(huì)覆蓋初始配置,因此軟件包更新的配置并不能自動(dòng)更新進(jìn)來,。這種方法經(jīng)常用在對配置需要做永久的改動(dòng),,而不論軟件包是否更新,。
            如果想要復(fù)原默認(rèn)配置,那么只需要?jiǎng)h除以上創(chuàng)建的配置文件,,而后重啟系統(tǒng)或者運(yùn)行如下命令即可:
                systemctl daemon-reload
            daemon-reload選項(xiàng)會(huì)重新加載所有的unit文件并重新生成依賴樹,,你也可以利用如下方法達(dá)到同樣效果:
                init q
            同樣,如果修改的unit文件屬于一個(gè)正在運(yùn)行的服務(wù),,那么服務(wù)必須重啟才能接受新的設(shè)置:
                systemctl restart name.service
        · 拓展默認(rèn)unit配置:
            為了對默認(rèn)的unit文件增加一些額外的選項(xiàng),,首先需要在/etc/systemd/system/下創(chuàng)建配置文件夾:
                mkdir /etc/systemd/system/name.service.d
            在上面的目錄中新建配置文件,記住文件后綴必須為.conf
                touch /etc/systemd/system/name.service.d/config_name.conf
            然后在該文件中在相應(yīng)的字段中加入配置即可,。為了是修改生效,,需要執(zhí)行:
                systemctl daemon-reload
                systemctl restart name.service
        · 重寫默認(rèn)unit配置:
            為了要對軟件包的配置作持久的更改,需要把unit文件拷貝到/etc/systemd/system/目錄下:
                cp /usr/lib/systemd/system/name.service /etc/systemd/system/name.service
            然后對拷貝的文件做出需要的修改,。之后運(yùn)行:
                systemctl daemon-reload
                systemctl restart name.service
                

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

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多