电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

linux 系統進程管理工具systemd詳解(systemctl命令、創建自己的systemd服務)

瀏覽:213日期:2023-03-07 14:40:41
目錄
  • linux systemd
    • 什么是 systemd
      • systemd 特點
      • unit(單元)
      • systemd unit目錄
      • Unit 和 Target
      • Unit 文件結構
  • Linux命令——systemctl
    • 參考

      linux systemd

      什么是 systemd

      Linux 系統在啟動過程中,內核完成初始化以后,由內核第一個啟動的程序便是 init 程序,路徑為 /sbin/init(為一個軟連接,鏈接到真實的 init 進程),其 PID 為1,它為系統里所有進程的“祖先”,Linux 中所有的進程都由 init 進程直接或間接進行創建并運行,init 進程以守護進程的方式存在,負責組織與運行系統的相關初始化工作,讓系統進入定義好的運行模式,如命令行模式或圖形界面模式。

      Systemd(系統管理守護進程),最開始以GNU GPL協議授權開發,現在已轉為使用GNU LGPL協議,它是如今討論最熱烈的引導和服務管理程序。如果你的Linux系統配置為使用Systemd引導程序,它取替傳統的SysV init,啟動過程將交給systemd處理。Systemd的一個核心功能是它同時支持SysV init的后開機啟動腳本。

      systemd是目前Linux系統上主要的系統守護進程管理工具,由于init一方面對于進程的管理是串行化的,容易出現阻塞情況,另一方面init也僅僅是執行啟動腳本,并不能對服務本身進行更多的管理。所以從CentOS 7開始也由systemd取代了init作為默認的系統進程管理工具

      systemd 是內核啟動后的第一個用戶進程,PID 為1,是所有其它用戶進程的父進程。

      systemd 特點

      • 最新系統都采用systemd管理(RedHat7,CentOS7,Ubuntu20.04…)
      • CentOS7 支持開機并行啟動服務,顯著提高開機啟動效率
      • CentOS7關機只關閉正在運行的服務,而CentOS6,全部都關閉一次。
      • CentOS7服務的啟動與停止不再使用腳本進行管理,也就是/etc/init.d下不在有腳本。
      • CentOS7使用systemd解決原有模式缺陷,比如原有service不會關閉程序產生的子進程

      unit(單元)

      系統初始化需要做的事情非常多。需要啟動后臺服務,比如啟動 ssh 服務;需要做配置工作,比如掛載文件系統。這個過程中的每一步都被 systemd 抽象為一個配置單元,即 unit。可以認為一個服務是一個配置單元,一個掛載點是一個配置單元,一個交換分區的配置是一個配置單元等等。

      下面是一些常見的 unit 類型:

      • service :代表一個后臺服務進程,比如 MySQLd。這是最常用的一類。
      • socket :此類配置單元封裝系統和互聯網中的一個套接字 。當下,systemd 支持流式、數據報和 連續包的 AF_INET、AF_INET6、AF_UNIX socket 。每一個套接字配置單元都有一個相應的服務配置單元 。相應的服務在第一個"連接"進入套接字時就會啟動(例如:nscd.socket 在有新連接后便啟動 nscd.service)。
      • device :此類配置單元封裝一個存在于 Linux 設備樹中的設備。每一個使用 udev 規則標記的設備都將會在 systemd 中作為一個設備配置單元出現。
      • mount :此類配置單元封裝文件系統結構層次中的一個掛載點。Systemd 將對這個掛載點進行監控和管理。比如可以在啟動時自動將其掛載;可以在某些條件下自動卸載。Systemd 會將 /etc/fstab 中的條目都轉換為掛載點,并在開機時處理。
      • automount :此類配置單元封裝系統結構層次中的一個自掛載點。每一個自掛載配置單元對應一個掛載配置單元 ,當該自動掛載點被訪問時,systemd 執行掛載點中定義的掛載行為。
      • swap:和掛載配置單元類似,交換配置單元用來管理交換分區。用戶可以用交換配置單元來定義系統中的交換分區,可以讓這些交換分區在啟動時被激活。
      • target :此類配置單元為其他配置單元進行邏輯分組。它們本身實際上并不做什么,只是引用其他配置單元而已。這樣便可以對配置單元做一個統一的控制。這樣就可以實現大家都已經非常熟悉的運行級別概念。比如想讓系統進入圖形化模式,需要運行許多服務和配置命令,這些操作都由一個個的配置單元表示,將所有這些配置單元組合為一個目標(target),就表示需要將這些配置單元全部執行一遍以便進入目標所代表的系統運行狀態。 (例如:multi-user.target 相當于在傳統使用 SysV 的系統中運行級別 5)
      • timer:定時器配置單元用來定時觸發用戶定義的操作,這類配置單元取代了 atd、crond 等傳統的定時服務。
      • snapshot :與 target 配置單元相似,快照是一組配置單元。它保存了系統當前的運行狀態。
      • path:文件系統中的一個文件或目錄。
      • scope:用于 cgroups,表示從 systemd 外部創建的進程。
      • slice:用于 cgroups,表示一組按層級排列的單位。slice 并不包含進程,但會組建一個層級,并將 scope 和 service 都放置其中。
        **每個配置單元都有一個對應的配置文件,系統管理員的任務就是編寫和維護這些不同的配置文件,比如一個 MySQL 服務對應一個 mysql.service 文件。**
      
      • .automount:用于控制自動掛載文件系統,相當于 SysV-init 的 autofs 服務
      • .device:對于 /dev 目錄下的設備,主要用于定義設備之間的依賴關系
      • .mount:定義系統結構層次中的一個掛載點,可以替代過去的 /etc/fstab 配置文件
      • .path:用于監控指定目錄或文件的變化,并觸發其它 Unit 運行
      • .scope:這種 Unit 文件不是用戶創建的,而是 Systemd 運行時產生的,描述一些系統服務的分組信息
      • .service:封裝守護進程的啟動、停止、重啟和重載操作,是最常見的一種 Unit 文件
      • .slice:用于表示一個 CGroup 的樹,通常用戶不會自己創建這樣的 Unit 文件
      • .snapshot:用于表示一個由 systemctl snapshot 命令創建的 Systemd Units 運行狀態快照
      • .socket:監控來自于系統或網絡的數據消息,用于實現基于數據自動觸發服務啟動
      • .swap:定義一個用戶做虛擬內存的交換分區
      • .target:用于對 Unit 文件進行邏輯分組,引導其它 Unit 的執行。它替代了 SysV-init 運行級別的作用,并提供更靈活的基于特定設備事件的啟動方式
      • .timer:用于配置在特定時間觸發的任務,替代了 Crontab 的功能

      systemd unit目錄

      Unit 文件按照 Systemd 約定,應該被放置指定的三個系統目錄之一中。這三個目錄是有優先級的,如下所示,越靠上的優先級越高。因此,在三個目錄中有同名文件的時候,只有優先級最高的目錄里的那個文件會被使用。

      /etc/systemd/system:系統或用戶自定義的配置文件
      /run/systemd/system:軟件運行時生成的配置文件
      /usr/lib/systemd/system:系統或**第三方軟件安裝時添加的配置文件**。

      Systemd 默認從目錄 /etc/systemd/system/ 讀取配置文件。但是,里面存放的大部分文件都是符號鏈接,指向目錄 /usr/lib/systemd/system/,真正的配置文件存放在那個目錄。

      Unit 和 Target

      Target 就是一個 Unit 組,包含許多相關的 Unit 。

      Unit 是 Systemd 管理系統資源的基本單元,可以認為每個系統資源就是一個 Unit,并使用一個 Unit 文件定義。在 Unit 文件中需要包含相應服務的描述、屬性以及需要運行的命令。

      Unit 文件結構

      systemd.service 中文手冊
      參考URL:

      每一個服務以.service結尾,一般會分為3部分:[Unit]、[Service]和[Install]

      • [Unit]:記錄unit文件的通用信息。
      • [Service]:記錄Service的信息
      • [Install]:安裝信息。

      把自己的服務使用systemd管理需要書寫*.service文件,如服務名xxx.service,下面我們介紹一下*.service文件里面具體的內容。
      進入目錄 cd /etc/systemd/system/

      cat << EOF > /etc/systemd/system/xxx.service
      [Unit]
      Description=Xxx Service
      Documentation=https://www.secureweb3.com/
      After=network-online.target
      Wants=network-online.target
      
      [Service]
      User=root
      CapabilityBoundingSet=CAP_NET_ADMIN CAP_NET_BIND_SERVICE
      AmbientCapabilities=CAP_NET_ADMIN CAP_NET_BIND_SERVICE
      NoNewPrivileges=true
      ExecStart=+$APPROOT/xxx
      Restart=on-failure
      RestartPreventExitStatus=23
      
      [Install]
      WantedBy=multi-user.target
      EOF
      
      
      • Description:描述這個 Unit 文件的信息
      • Documentation:指定服務的文檔,可以是一個或多個文檔的 URL 路徑
      • Requires:依賴的其它 Unit 列表,列在其中的 Unit 模板會在這個服務啟動時的同時被啟動。并且,如果其中任意一個服務啟動失敗,這個服務也會被終止
      • Wants:與 Requires 相似,但只是在被配置的這個 Unit 啟動時,觸發啟動列出的每個 Unit 模塊,而不去考慮這些模板啟動是否成功
      • After:與 Requires 相似,但是在后面列出的所有模塊全部啟動完成以后,才會啟動當前的服務
      • network-online.target是主動等待直到網絡“啟動”的target,其中“啟動”的定義

      network.target代表有網路,network-online.target代表一個連通著的網絡。

      [service]

      • User: 指定用戶運行CapabilityBoundingSet: 能力邊界設置,可以設置哪些能力
      • capability

      美: [?ke?p??b?l?ti]
      英: [.ke?p?’b?l?ti]
      n. 能力;才能;(國家的)軍事力量
      網絡 性能;容量;才干

      bound
      美: [ba?nd]
      英: [ba?nd]
      n. 邊界;跳躍;范圍;界限
      v. 跳躍;鄰接;“bind”的過去分詞和過去式;限制
      adj. 打算;要往(某處)去的;被束縛的;理應…的
      網絡 彈跳;邊邊界框;彈跳力

      CAP_NET_ADMIN
      執行各種與網絡相關的操作:
      * 接口配置;
      * 管理 IP 防火墻、偽裝和
      會計;
      * 修改路由表;
      *綁定到任何地址以進行透明代理;
      * 設置服務類型 (TOS);
      * 清除驅動程序統計信息;
      * 設置混雜模式;
      *啟用多播;
      * 使用setsockopt(2)設置以下套接字選項:
      SO_DEBUG、SO_MARK、SO_PRIORITY(對于優先級外
      范圍 0 到 6)、SO_RCVBUFFORCE和SO_SNDBUFFORCE。

         CAP_NET_BIND_SERVICE
        將套接字綁定到 Internet 域特權端口(端口
        小于 1024 的數字)。
      • NoNewPrivileges=true
      • ExecStart: 定義啟動進程時執行的命令
      • Restart= 設為on-failure, on-watchdog, on-abnormal, always 之一, 可以實現在失敗狀態下的自動重啟該服務。
      • RestartPreventExitStatus中列出的退出碼或者信號永遠不會導致該服務被重啟。

      [Install]

      • WantedBy字段:表示該服務所在的 Target。

      Target的含義是服務組,表示一組服務。WantedBy=multi-user.target指的是,sshd 所在的 Target 是multi-user.target。

      這個設置非常重要,因為執行systemctl enable sshd.service命令時,sshd.service的一個符號鏈接,就會放在/etc/systemd/system目錄下面的multi-user.target.wants子目錄之中。

      一般來說,常用的 Target 有兩個:一個是multi-user.target,表示多用戶命令行狀態;另一個是graphical.target,表示圖形用戶狀態,它依賴于multi-user.target。

      Linux命令——systemctl

      Systemd 入門教程:實戰篇
      參考URL: https://www.jb51.net/article/269756.htm
      Linux命令——systemctl
      參考URL:https://www.jb51.net/article/269756.htm

      systemd對應的進程管理命令就是systemctl。

      systemctl   [command]    [unit](配置的應用名稱)
       
      command可選項· 
      start:啟動指定的unit systemctl start nginx
      stop:關閉指定的unit  systemctl stop nginx
      restart:重啟指定unit systemctl restart nginx
      reload:重載指定unit  systemctl reload nginx
      enable:系統開機時自動啟動指定unit,前提是配置文件中有相關配置 systemctl enable nginx
      disable:開機時不自動運行指定unit  systemctl disable nginx
      status:查看指定unit當前運行狀態   systemctl status nginx

      參考

      Systemd 入門教程:實戰篇
      參考URL: https://www.jb51.net/article/269756.htm

      到此這篇關于linux 系統進程管理工具systemd詳解(systemctl命令、創建自己的systemd服務)的文章就介紹到這了,更多相關linux 進程管理工具systemd內容請搜索以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持!

      標簽: Linux Apache
      主站蜘蛛池模板: ★店家乐|服装销售管理软件|服装店收银系统|内衣店鞋店进销存软件|连锁店管理软件|收银软件手机版|会员管理系统-手机版,云版,App | 东莞韩创-专业绝缘骨架|马达塑胶零件|塑胶电机配件|塑封电机骨架厂家 | 元拓建材集团官方网站 | 东莞螺杆空压机_永磁变频空压机_节能空压机_空压机工厂批发_深圳螺杆空压机_广州螺杆空压机_东莞空压机_空压机批发_东莞空压机工厂批发_东莞市文颖设备科技有限公司 | 冷藏车-东风吸污车-纯电动环卫车-污水净化车-应急特勤保障车-程力专汽厂家-程力专用汽车股份有限公司销售二十一分公司 | 电地暖-电采暖-发热膜-石墨烯电热膜品牌加盟-暖季地暖厂家 | 在线钠离子分析仪-硅酸根离子浓度测定仪-油液水分测定仪价格-北京时代新维测控设备有限公司 | 河南不锈钢水箱_地埋水箱_镀锌板水箱_消防水箱厂家-河南联固供水设备有限公司 | 上海办公室装修,写字楼装修—启鸣装饰设计工程有限公司 | 胜为光纤光缆_光纤跳线_单模尾纤_光纤收发器_ODF光纤配线架厂家直销_北京睿创胜为科技有限公司 - 北京睿创胜为科技有限公司 | 知名电动蝶阀,电动球阀,气动蝶阀,气动球阀生产厂家|价格透明-【固菲阀门官网】 | TPE塑胶原料-PPA|杜邦pom工程塑料、PPSU|PCTG材料、PC/PBT价格-悦诚塑胶 | 安全阀_弹簧式安全阀_美标安全阀_工业冷冻安全阀厂家-中国·阿司米阀门有限公司 | 纳米二氧化硅,白炭黑,阴离子乳化剂-臻丽拾科技 | 临沂招聘网_人才市场_招聘信息_求职招聘找工作请认准【马头商标】 | 网站建设-临朐爱采购-抖音运营-山东兆通网络科技 | 海德莱电力(HYDELEY)-无功补偿元器件生产厂家-二十年专业从事电力电容器 | 硫化罐_蒸汽硫化罐_大型硫化罐-山东鑫泰鑫智能装备有限公司 | 振动时效_振动时效仪_超声波冲击设备-济南驰奥机电设备有限公司 北京宣传片拍摄_产品宣传片拍摄_宣传片制作公司-现像传媒 | 氧化锆纤维_1800度高温退火炉_1800度高温烧结炉-南京理工宇龙新材料股份有限公司 | 沈阳网站建设_沈阳网站制作_沈阳网页设计-做网站就找示剑新零售 沈阳缠绕膜价格_沈阳拉伸膜厂家_沈阳缠绕膜厂家直销 | 首页|光催化反应器_平行反应仪_光化学反应仪-北京普林塞斯科技有限公司 | 国际金融网_每日财经新资讯网 | 石栏杆_青石栏杆_汉白玉栏杆_花岗岩栏杆 - 【石雕之乡】点石石雕石材厂 | 固诺家居-全屋定制十大品牌_整体衣柜木门橱柜招商加盟 | 昆山新莱洁净应用材料股份有限公司-卫生级蝶阀,无菌取样阀,不锈钢隔膜阀,换向阀,离心泵 | pos机办理,智能/扫码/二维码/微信支付宝pos机-北京万汇通宝商贸有限公司 | 通风气楼_通风天窗_屋顶风机-山东美创通风设备有限公司 | 切铝机-数控切割机-型材切割机-铝型材切割机-【昆山邓氏精密机械有限公司】 | ICP备案查询_APP备案查询_小程序备案查询 - 备案巴巴 | 水厂自动化|污水处理中控系统|水利信息化|智慧水务|智慧农业-山东德艾自动化科技有限公司 | 河南mpp电力管_mpp电力管生产厂家_mpp电力电缆保护管价格 - 河南晨翀实业 | 碳化硅,氮化硅,冰晶石,绢云母,氟化铝,白刚玉,棕刚玉,石墨,铝粉,铁粉,金属硅粉,金属铝粉,氧化铝粉,硅微粉,蓝晶石,红柱石,莫来石,粉煤灰,三聚磷酸钠,六偏磷酸钠,硫酸镁-皓泉新材料 | 卷筒电缆-拖链电缆-特种柔性扁平电缆定制厂家「上海缆胜」 | 玉米深加工设备-玉米深加工机械-新型玉米工机械生产厂家-河南粮院机械制造有限公司 | 北京网站建设公司_北京网站制作公司_北京网站设计公司-北京爱品特网站建站公司 | 玉米深加工机械,玉米加工设备,玉米加工机械等玉米深加工设备制造商-河南成立粮油机械有限公司 | 拉伸膜,PE缠绕膜,打包带,封箱胶带,包装膜厂家-东莞宏展包装 | 理化生实验室设备,吊装实验室设备,顶装实验室设备,实验室成套设备厂家,校园功能室设备,智慧书法教室方案 - 东莞市惠森教学设备有限公司 | 硬度计,金相磨抛机_厂家-莱州华煜众信试验仪器有限公司 | 昆山新莱洁净应用材料股份有限公司-卫生级蝶阀,无菌取样阀,不锈钢隔膜阀,换向阀,离心泵 |