欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

linux?系統(tǒng)進(jìn)程管理工具systemd詳解(systemctl命令、創(chuàng)建自己的systemd服務(wù))

 更新時(shí)間:2022年12月12日 10:31:42   作者:西京刀客  
Unit?是?Systemd?管理系統(tǒng)資源的基本單元,可以認(rèn)為每個(gè)系統(tǒng)資源就是一個(gè)?Unit,并使用一個(gè)?Unit?文件定義,這篇文章主要介紹了linux?系統(tǒng)進(jìn)程管理工具systemd詳解(systemctl命令、創(chuàng)建自己的systemd服務(wù)),需要的朋友可以參考下

linux systemd

什么是 systemd

Linux 系統(tǒng)在啟動(dòng)過(guò)程中,內(nèi)核完成初始化以后,由內(nèi)核第一個(gè)啟動(dòng)的程序便是 init 程序,路徑為 /sbin/init(為一個(gè)軟連接,鏈接到真實(shí)的 init 進(jìn)程),其 PID 為1,它為系統(tǒng)里所有進(jìn)程的“祖先”,Linux 中所有的進(jìn)程都由 init 進(jìn)程直接或間接進(jìn)行創(chuàng)建并運(yùn)行,init 進(jìn)程以守護(hù)進(jìn)程的方式存在,負(fù)責(zé)組織與運(yùn)行系統(tǒng)的相關(guān)初始化工作,讓系統(tǒng)進(jìn)入定義好的運(yùn)行模式,如命令行模式或圖形界面模式。

Systemd(系統(tǒng)管理守護(hù)進(jìn)程),最開(kāi)始以GNU GPL協(xié)議授權(quán)開(kāi)發(fā),現(xiàn)在已轉(zhuǎn)為使用GNU LGPL協(xié)議,它是如今討論最熱烈的引導(dǎo)和服務(wù)管理程序。如果你的Linux系統(tǒng)配置為使用Systemd引導(dǎo)程序,它取替?zhèn)鹘y(tǒng)的SysV init,啟動(dòng)過(guò)程將交給systemd處理。Systemd的一個(gè)核心功能是它同時(shí)支持SysV init的后開(kāi)機(jī)啟動(dòng)腳本。

systemd是目前Linux系統(tǒng)上主要的系統(tǒng)守護(hù)進(jìn)程管理工具,由于init一方面對(duì)于進(jìn)程的管理是串行化的,容易出現(xiàn)阻塞情況,另一方面init也僅僅是執(zhí)行啟動(dòng)腳本,并不能對(duì)服務(wù)本身進(jìn)行更多的管理。所以從CentOS 7開(kāi)始也由systemd取代了init作為默認(rèn)的系統(tǒng)進(jìn)程管理工具

systemd 是內(nèi)核啟動(dòng)后的第一個(gè)用戶進(jìn)程,PID 為1,是所有其它用戶進(jìn)程的父進(jìn)程。

systemd 特點(diǎn)

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

unit(單元)

系統(tǒng)初始化需要做的事情非常多。需要啟動(dòng)后臺(tái)服務(wù),比如啟動(dòng) ssh 服務(wù);需要做配置工作,比如掛載文件系統(tǒng)。這個(gè)過(guò)程中的每一步都被 systemd 抽象為一個(gè)配置單元,即 unit??梢哉J(rèn)為一個(gè)服務(wù)是一個(gè)配置單元,一個(gè)掛載點(diǎn)是一個(gè)配置單元,一個(gè)交換分區(qū)的配置是一個(gè)配置單元等等。

下面是一些常見(jiàn)的 unit 類型:

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

systemd unit目錄

Unit 文件按照 Systemd 約定,應(yīng)該被放置指定的三個(gè)系統(tǒng)目錄之一中。這三個(gè)目錄是有優(yōu)先級(jí)的,如下所示,越靠上的優(yōu)先級(jí)越高。因此,在三個(gè)目錄中有同名文件的時(shí)候,只有優(yōu)先級(jí)最高的目錄里的那個(gè)文件會(huì)被使用。

/etc/systemd/system:系統(tǒng)或用戶自定義的配置文件
/run/systemd/system:軟件運(yùn)行時(shí)生成的配置文件
/usr/lib/systemd/system:系統(tǒng)或**第三方軟件安裝時(shí)添加的配置文件**。

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

Unit 和 Target

Target 就是一個(gè) Unit 組,包含許多相關(guān)的 Unit 。

Unit 是 Systemd 管理系統(tǒng)資源的基本單元,可以認(rèn)為每個(gè)系統(tǒng)資源就是一個(gè) Unit,并使用一個(gè) Unit 文件定義。在 Unit 文件中需要包含相應(yīng)服務(wù)的描述、屬性以及需要運(yùn)行的命令。

Unit 文件結(jié)構(gòu)

systemd.service 中文手冊(cè)
參考URL:

每一個(gè)服務(wù)以.service結(jié)尾,一般會(huì)分為3部分:[Unit]、[Service]和[Install]

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

把自己的服務(wù)使用systemd管理需要書(shū)寫(xiě)*.service文件,如服務(wù)名xxx.service,下面我們介紹一下*.service文件里面具體的內(nèi)容。
進(jìn)入目錄 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:描述這個(gè) Unit 文件的信息
  • Documentation:指定服務(wù)的文檔,可以是一個(gè)或多個(gè)文檔的 URL 路徑
  • Requires:依賴的其它 Unit 列表,列在其中的 Unit 模板會(huì)在這個(gè)服務(wù)啟動(dòng)時(shí)的同時(shí)被啟動(dòng)。并且,如果其中任意一個(gè)服務(wù)啟動(dòng)失敗,這個(gè)服務(wù)也會(huì)被終止
  • Wants:與 Requires 相似,但只是在被配置的這個(gè) Unit 啟動(dòng)時(shí),觸發(fā)啟動(dòng)列出的每個(gè) Unit 模塊,而不去考慮這些模板啟動(dòng)是否成功
  • After:與 Requires 相似,但是在后面列出的所有模塊全部啟動(dòng)完成以后,才會(huì)啟動(dòng)當(dāng)前的服務(wù)
  • network-online.target是主動(dòng)等待直到網(wǎng)絡(luò)“啟動(dòng)”的target,其中“啟動(dòng)”的定義

network.target代表有網(wǎng)路,network-online.target代表一個(gè)連通著的網(wǎng)絡(luò)。

[service]

  • User: 指定用戶運(yùn)行CapabilityBoundingSet: 能力邊界設(shè)置,可以設(shè)置哪些能力
  • capability

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

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

CAP_NET_ADMIN
執(zhí)行各種與網(wǎng)絡(luò)相關(guān)的操作:
* 接口配置;
* 管理 IP 防火墻、偽裝和
會(huì)計(jì);
* 修改路由表;
*綁定到任何地址以進(jìn)行透明代理;
* 設(shè)置服務(wù)類型 (TOS);
* 清除驅(qū)動(dòng)程序統(tǒng)計(jì)信息;
* 設(shè)置混雜模式;
*啟用多播;
* 使用setsockopt(2)設(shè)置以下套接字選項(xiàng):
SO_DEBUG、SO_MARK、SO_PRIORITY(對(duì)于優(yōu)先級(jí)外
范圍 0 到 6)、SO_RCVBUFFORCE和SO_SNDBUFFORCE。

   CAP_NET_BIND_SERVICE
          將套接字綁定到 Internet 域特權(quán)端口(端口
          小于 1024 的數(shù)字)。
  • NoNewPrivileges=true
  • ExecStart: 定義啟動(dòng)進(jìn)程時(shí)執(zhí)行的命令
  • Restart= 設(shè)為on-failure, on-watchdog, on-abnormal, always 之一, 可以實(shí)現(xiàn)在失敗狀態(tài)下的自動(dòng)重啟該服務(wù)。
  • RestartPreventExitStatus中列出的退出碼或者信號(hào)永遠(yuǎn)不會(huì)導(dǎo)致該服務(wù)被重啟。

[Install]

  • WantedBy字段:表示該服務(wù)所在的 Target。

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

這個(gè)設(shè)置非常重要,因?yàn)閳?zhí)行systemctl enable sshd.service命令時(shí),sshd.service的一個(gè)符號(hào)鏈接,就會(huì)放在/etc/systemd/system目錄下面的multi-user.target.wants子目錄之中。

一般來(lái)說(shuō),常用的 Target 有兩個(gè):一個(gè)是multi-user.target,表示多用戶命令行狀態(tài);另一個(gè)是graphical.target,表示圖形用戶狀態(tài),它依賴于multi-user.target。

Linux命令——systemctl

Systemd 入門(mén)教程:實(shí)戰(zhàn)篇
參考URL: http://www.dbjr.com.cn/article/269756.htm
Linux命令——systemctl
參考URL:http://www.dbjr.com.cn/article/269756.htm

systemd對(duì)應(yīng)的進(jìn)程管理命令就是systemctl。

systemctl   [command]    [unit](配置的應(yīng)用名稱)
 
command可選項(xiàng)· 
start:?jiǎn)?dòng)指定的unit         systemctl start nginx
stop:關(guān)閉指定的unit          systemctl stop nginx
restart:重啟指定unit         systemctl restart nginx
reload:重載指定unit          systemctl reload nginx
enable:系統(tǒng)開(kāi)機(jī)時(shí)自動(dòng)啟動(dòng)指定unit,前提是配置文件中有相關(guān)配置 systemctl enable nginx
disable:開(kāi)機(jī)時(shí)不自動(dòng)運(yùn)行指定unit  systemctl disable nginx
status:查看指定unit當(dāng)前運(yùn)行狀態(tài)   systemctl status nginx

參考

Systemd 入門(mén)教程:實(shí)戰(zhàn)篇
參考URL: http://www.dbjr.com.cn/article/269756.htm

到此這篇關(guān)于linux 系統(tǒng)進(jìn)程管理工具systemd詳解(systemctl命令、創(chuàng)建自己的systemd服務(wù))的文章就介紹到這了,更多相關(guān)linux 進(jìn)程管理工具systemd內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • CentOS系統(tǒng)中PHP和MySQL的升級(jí)方法

    CentOS系統(tǒng)中PHP和MySQL的升級(jí)方法

    yum是CentOS系統(tǒng)自帶的用于方便地添加/刪除/更新RPM包的工具,它能自動(dòng)解決包的倚賴性問(wèn)題。
    2010-06-06
  • 使用vscode遠(yuǎn)程linux開(kāi)發(fā)的實(shí)現(xiàn)

    使用vscode遠(yuǎn)程linux開(kāi)發(fā)的實(shí)現(xiàn)

    這篇文章主要介紹了使用vscode遠(yuǎn)程linux開(kāi)發(fā)的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • Ubuntu 16.04/18.04 安裝Pycharm及Ipython的教程

    Ubuntu 16.04/18.04 安裝Pycharm及Ipython的教程

    這篇文章主要介紹了Ubuntu 16.04/18.04 安裝Pycharm及Ipython的教程,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-10-10
  • RHEL7使用ssm命令管理LVM的方法

    RHEL7使用ssm命令管理LVM的方法

    下面小編就為大家?guī)?lái)一篇RHEL7使用ssm命令管理LVM的方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-12-12
  • linux常用命令小結(jié)之yum、源碼安裝

    linux常用命令小結(jié)之yum、源碼安裝

    這篇文章主要介紹了linux常用命令小結(jié)之yum、源碼安裝的相關(guān)資料,需要的朋友可以參考下
    2018-04-04
  • Centos7開(kāi)機(jī)啟動(dòng)自己的腳本的方法

    Centos7開(kāi)機(jī)啟動(dòng)自己的腳本的方法

    本篇文章主要介紹了Centos7開(kāi)機(jī)啟動(dòng)自己的腳本的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。
    2017-03-03
  • Linux 的cp命令及示例詳解

    Linux 的cp命令及示例詳解

    本篇文章主要介紹了Linux 的cp命令詳解, cp指令用于復(fù)制文件或目錄,有興趣的可以了解一下。
    2016-11-11
  • 如何利用Bash腳本監(jiān)控Linux的內(nèi)存使用情況

    如何利用Bash腳本監(jiān)控Linux的內(nèi)存使用情況

    這篇文章主要給大家介紹了關(guān)于如何利用Bash腳本監(jiān)控Linux的內(nèi)存使用情況的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用linux具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • linux curl命令詳解及實(shí)例分享

    linux curl命令詳解及實(shí)例分享

    curl命令使用了libcurl庫(kù)來(lái)實(shí)現(xiàn),libcurl庫(kù)常用在C程序中用來(lái)處理HTTP請(qǐng)求,curlpp是libcurl的一個(gè)C++封裝,這幾個(gè)東西可以用在抓取網(wǎng)頁(yè)、網(wǎng)絡(luò)監(jiān)控等方面的開(kāi)發(fā),而curl命令可以幫助來(lái)解決開(kāi)發(fā)過(guò)程中遇到的問(wèn)題。
    2014-08-08
  • linux中l(wèi)s命令使用詳解

    linux中l(wèi)s命令使用詳解

    這篇文章主要介紹了linux中l(wèi)s命令使用詳解,基本上涵蓋了所有的操作了,需要的朋友可以參考下
    2015-01-01

最新評(píng)論