日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

初识Systemd

發布時間:2024/1/8 编程问答 55 豆豆
生活随笔 收集整理的這篇文章主要介紹了 初识Systemd 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

依Linux系統慣例,帶字母d的一般為守護進程(daemon),Systemd即為System Daemon,是Linux下的一款系統和服務管理器,用于取代傳統的Init組件。
Systemd功能強大,諸如Gnome桌面、用戶登錄管理、網絡服務都已集成其中,甚至后續udev也要加入Systemd的"豪華套餐"。不過開源社區對于Systemd則是充滿了爭議:有人認為它有利于Linux系統標準化;有人則認為它管的太多——不符合UNIX
“keep simple, keep stupid"的設計哲學,總之是有褒有貶。而現在,越來越多的Linux發行版(如SUSE、RedHat、CentOS、Ububtu等)都開始使用Systemd,大勢所趨,Systemd在爭議之中竟有一統Linux發行版之勢。
作為一個開發為主,順便學學運維的小蝦米,我接觸Systemd的目的是為了實現一個腳本開機自啟動的功能,至于其他的"是是非非”,自有肉食者謀,這里便不過多評價。

單元、服務與配置文件

Systemd由許多單元(Unit)組成,例如我們熟悉的SSH、Samba、Firewall等服務(Service),都由與之相關的Systemd單元進行管理。

Systemd單元有許多類型,不僅有管理服務的單元,還有管理其他系統資源的單元(如socket、系統設備、掛載點、文件系統等)。

要了解一個單元,最直觀的方式就是查看它的配置文件,以SSH為例,在Systemd中由單元sshd.service管理,執行以下命令可以查看配置文件內容:

$ systemctl cat sshd.service

SSH配置文件:

[Unit] Description=OpenSSH server daemon Documentation=man:sshd(8) man:sshd_config(5) After=network.target sshd-keygen.service Wants=sshd-keygen.service[Service] EnvironmentFile=/etc/sysconfig/sshd ExecStart=/usr/sbin/sshd -D $OPTIONS ExecReload=/bin/kill -HUP $MAINPID Type=simple KillMode=process Restart=on-failure RestartSec=42s[Install] WantedBy=multi-user.target

可以看到,配置文件分成幾個區塊,每個區塊包含若干條字段組成的鍵值對,下面對解上述配置文件中幾個關鍵字段的含義進行解釋:

  • Description
    當前服務的簡單描述
  • After
    啟動順序(與之對應還有Before),表示sshd.service在network.target與sshd-keygen.service之后啟動
  • ExecStart
    啟動命令,定義服務啟動時執行的命令
  • ExecReload
    重載命令,定義服務重載時執行的命令
  • Type
    啟動類型,下表列出了幾種常見的類型
值描述
simple默認值, 表示啟動的服務為主進程
oneshot類似于simple,只執行一次,Systemd等待執行完畢后才啟動其他服務
forking以fork()方式啟動,父進程退出,子進程成為主進程
  • WantedBy
    表示服務所在的Target

Target也是一種Systemd單元,可以理解為服務組,即一系列服務的集合

實現一個開機自啟動服務

初步了解單元與配置文件后,我們就可以通過Systemd實現一個開機自啟動的服務了。例如現有一個程序MyProgram位于目錄/home下,欲使其開機自啟動,步驟如下:
1. 新增自定義服務
在/usr/lib/systemd目錄下新增配置文件MyProgram.service,如下:

[Unit] Description=my program[Service] Type=oneshot ExecStart=/home/MyProgram[Install] WantedBy=multi-user.target

2. 使能新增的服務
執行如下命令:

$ systemctl enable MyProgram.service

根據配置文件中字段WantedBy的值,該命令將在目錄/etc/systemd/system/multi-user.target下創建文件MyProgram.service的軟鏈接。
3. 查看運行狀態
如此操作后,系統將在啟動后執行程序MyProgram,執行如下命令查看服務的運行狀態

$ systemctl status MyProgram.service

4. 去使能新增的服務
如果想取消開機啟動MyProgram,則需執行以下命令:

$ systemctl disable MyProgram.service

參考:

  • systemd (簡體中文) - ArchWiki
  • Systemd 入門教程 - 阮一峰的網絡日志
  • 總結

    以上是生活随笔為你收集整理的初识Systemd的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。