亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 操作系統 > 正文

systemd詳解

2024-06-28 13:20:02
字體:
來源:轉載
供稿:網友
systemd詳解

CentOS 7 使用systemd替換了SysV。Systemd目的是要取代Unix時代以來一直在使用的init系統,兼容SysV和LSB的啟動腳本,而且夠在進程啟動過程中更有效地引導加載服務。

systemd的特性有:

  • 支持并行化任務
  • 同時采用socket式與D-Bus總線式激活服務;
  • 按需啟動守護進程(daemon);
  • 利用 linux 的 cgroups 監視進程;
  • 支持快照和系統恢復;
  • 維護掛載點和自動掛載點;
  • 各服務間基于依賴關系進行精密控制。

systemd基本工具檢視和控制systemd的主要命令是systemctl。該命令可用于查看系統狀態和管理系統及服務。詳見man 1 systemctl。

小貼士: 在 systemctl 參數中添加 -H <用戶名>@<主機名> 可以實現對其他機器的遠程控制。該過程使用ssh鏈接。

注意: systemadm 是 systemd 的官方圖形前端。

分析系統狀態輸出激活的單元:

$ systemctl

以下命令等效:

$ systemctl list-units

輸出運行失敗的單元:

$ systemctl --failed

所有可用的單元文件存放在 /usr/lib/systemd/system/ 和 /etc/systemd/system/ 目錄(后者優先級更高)。查看所有已安裝服務:

$ systemctl list-unit-files

使用單元一個單元配置文件可以描述如下內容之一:系統服務(.service)、掛載點(.mount)、sockets(.sockets 、系統設備、交換分區/文件、啟動目標(target)、文件系統路徑、由 systemd 管理的計時器。詳情參閱 man 5 systemd.unit.

使用 systemctl 控制單元時,通常需要使用單元文件的全名,包括擴展名(例如 sshd.service)。但是有些單元可以在systemctl中使用簡寫方式。

  • 如果無擴展名,systemctl 默認把擴展名當作 .service。例如 netcfg 和 netcfg.service 是等價的。
  • 掛載點會自動轉化為相應的 .mount 單元。例如 /home 等價于 home.mount。
  • 設備會自動轉化為相應的 .device 單元,所以 /dev/sda2 等價于 dev-sda2.device。

立即激活單元:

# systemctl start <單元>

立即停止單元:

# systemctl stop <單元>

重啟單元:

# systemctl restart <單元>

命令單元重新讀取配置:

# systemctl reload <單元>

輸出單元運行狀態:

$ systemctl status <單元>

檢查單元是否配置為自動啟動:

$ systemctl is-enabled <單元>

開機自動激活單元:

# systemctl enable <單元>

注意: 如果服務沒有Install段落,一般意味著應該通過其它服務自動調用它們。如果真的需要手動安裝,可以直接連接服務,如下(將foo替換為真實的服務名):

# ln -s /usr/lib/systemd/system/foo.service /etc/systemd/system/graphical.target.wants/

取消開機自動激活單元:

# systemctl disable <單元>

顯示單元的手冊頁(必須由單元文件提供):

# systemctl help <單元>

重新載入 systemd,掃描新的或有變動的單元:

# systemctl daemon-reload

電源管理安裝 polkit 后才可使用電源管理。

如果你正登錄在一個本地的systemd-logind用戶會話,且當前沒有其它活動的會話,那么以下命令無需root權限即可執行。否則(例如,當前有另一個用戶登錄在某個tty),systemd 將會自動請求輸入root密碼。

重啟:

$ systemctl reboot

退出系統并停止電源:

$ systemctl poweroff

待機:

$ systemctl suspend

休眠:

$ systemctl hibernate

混合休眠模式(同時休眠到硬盤并待機):

$ systemctl hybrid-sleep

原生 systemd 配置文件

注意: 可能需要手動創建某些文件。所有文件的權限都是644,屬主 root,屬組 root。

虛擬控制臺可以用/etc/vconsole.conf 文件或者localectl 配置虛擬控制臺,包括鍵盤布局和控制臺字體。詳情請訪問 控制臺字體 和 鍵盤布局。

硬件時鐘systemd 默認硬件時鐘為協調世界時(UTC)。

小貼士: 推薦使用NTP服務來在線同步硬件時鐘。

硬件時鐘設定為地方時將硬件時鐘配置為地方時(不建議):

# timedatectl set-local-rtc true

重新調整為 UTC:

# timedatectl set-local-rtc false

如果設置成本地時間,處理夏令時有些麻煩。如果夏令時調整發生在關機時,下次啟動時時間會出現問題。最新的內核直接從實時時鐘芯片(RTC)讀取時間,不 使用 hwclock,內核把從 RTC 讀取的時間當作 UTC 處理。所以如果硬件時間是地方時,系統啟動一開始識別的時間是錯誤的,之后很快會進行矯正。這可能導致一些問題(尤其是時間倒退時)。

如果同時安裝了 Windows 操作系統(默認使用地方時),那么一般 RTC 會被設置為地方時。Windows 其實也能處理 UTC,需要修改注冊表。建議讓 Windows 使用 UTC,而非讓 Linux 使用地方時。Windows 使用 UTC 后,請記得禁用 Windows 的時間同步功能,以防 Windows 錯誤設置硬件時間。如上文所說,Linux 可以使用NTP服務來在線同步硬件時鐘。

內核模塊請訪問Kernel modules

文件系統掛載默認行為是:在啟動一個需要掛載特定分區的服務之前,系統自動檢查并掛載分區。/etc/fstab 中設定的網絡文件系統(如 NFS、Samba)無需配置即可正常工作,systemd 將確保網絡文件系統在網絡鏈接就緒后掛載。

詳情參閱:man 5 systemd.mount。

LVM如果裝有不通過 initramfs 激活的LVM卷,則需啟動 lvm-monitoring 服務(由 lvm2 軟件包提供):

# systemctl enable lvm-monitoring

ACPI 電源管理參閱 Power Management

臨時文件/usr/lib/tmpfiles.d/ 和 /etc/tmpfiles.d/ 中的文件描述了 systemd-tmpfiles 如何創建、清理、刪除臨時文件和目錄,這些文件和目錄通常存放在 /run 和 /tmp 中。配置文件名稱為 /etc/tmpfiles.d/<PRogram>.conf。此處的配置能覆蓋 /usr/lib/tmpfiles.d/ 目錄中的同名配置。

臨時文件通常和服務文件同時提供,以生成守護進程需要的文件和目錄。例如 Samba 服務需要目錄 /run/samba 存在并設置正確的權限位,就象這樣:

/usr/lib/tmpfiles.d/samba.confD /run/samba 0755 root root

此外,臨時文件還可以用來在開機時向特定文件寫入某些內容。比如,要禁止系統從USB設備喚醒,利用舊的 /etc/rc.local 可以用 echo USBE > /proc/acpi/wakeup,而現在可以這么做:

/etc/tmpfiles.d/disable-usb-wake.confw /proc/acpi/wakeup - - - - USBE

詳情參見 man 5 tmpfiles.d。

注意: 該方法不能向 /sys 中的配置文件添加參數,因為 systemd-tmpfiles-setup 有可能在相關模塊加載前運行。這種情況下,需要首先通過 modinfo <模塊名> 確認需要的參數,并在 /etc/modprobe.d 下的一個文件中設置改參數。另外,還可以使用 udev 規則,在設備就緒時設置相應屬性。

自己編寫 .service 文件systemd 的單元文件是受 XDG Desktop Entry .desktop 文件啟發而產生,而最初起源是 Windows 下的 .ini 文件。

處理依賴關系使用systemd時,可通過正確編寫單元配置文件來解決其依賴關系。典型的情況是,單元A要求單元B在A啟動之前運行。在此情況下,向單元A配置文件中的 [Unit] 段添加 Requires=B 和 After=B 即可。若此依賴關系是可選的,可添加 Wants=B 和 After=B。請注意 Wants= 和 Requires= 并不意味著 After=,即如果 After= 選項沒有制定,這兩個單元將被并行啟動。

依賴關系通常被用在服務(service)而不是目標(target)上。例如, network.target 一般會被某個配置網絡接口的服務引入,所以,將自定義的單元排在該服務之后即可,因為 network.target 已經啟動。

啟動方式編寫自定義的service文件時,可以選擇幾種不同的服務啟動方式。啟動方式可通過配置文件 [Service] 段中的 Type= 參數進行設置。具體的參數說明請參閱 man systemd.service 。

  • Type=simple(默認值):systemd認為該服務將立即啟動。服務進程不會fork。如果該服務要啟動其他服務,不要使用此類型啟動,除非該服務是socket激活型。
  • Type=forking:systemd認為當該服務進程fork,且父進程退出后服務啟動成功。對于常規的守護進程(daemon),除非你確定此啟動方式無法滿足需求,使用此類型啟動即可。使用此啟動類型應同時指定 PIDFile=,以便systemd能夠跟蹤服務的主進程。
  • Type=oneshot:這一選項適用于只執行一項任務、隨后立即退出的服務??赡苄枰瑫r設置 RemainAfterExit=yes 使得 systemd 在服務進程退出之后仍然認為服務處于激活狀態。
  • Type=notify:與 Type=simple 相同,但約定服務會在就緒后向 systemd 發送一個信號。這一通知的實現由 libsystemd-daemon.so 提供。
  • Type=dbus:若以此方式啟動,當指定的 BusName 出現在DBus系統總線上時,systemd認為服務就緒。

修改現存單元文件要更改由軟件包提供的單元文件,先創建名為 /etc/systemd/system/<單元名>.d/ 的目錄(如 /etc/systemd/system/httpd.service.d/),然后放入 *.conf 文件,其中可以添加或重置參數。這里設置的參數優先級高于原來的單元文件。例如,如果想添加一個額外的依賴,創建這么一個文件即可:

/etc/systemd/system/<unit>.d/customdependency.conf[Unit]Requires=<新依賴>After=<新依賴>

然后運行以下命令使更改生效:

# systemctl daemon-reload# systemctl restart <單元>

此外,把舊的單元文件從 /usr/lib/systemd/system/ 復制到 /etc/systemd/system/,然后進行修改,也可以達到同樣效果。在 /etc/systemd/system/ 目錄中的單元文件的優先級總是高于 /usr/lib/systemd/system/ 目錄中的同名單元文件。注意,當 /usr/lib/ 中的單元文件因軟件包升級變更時,/etc/ 中自定義的單元文件不會同步更新。此外,你還得執行 systemctl reenable <unit>,手動重新啟用該單元。因此,建議使用前面一種利用 *.conf 的方法。

小貼士: 可以用 systemd-delta 命令來查看哪些單元文件被覆蓋、哪些被修改。

單元配置文件的 vim 語法高亮支持可從官方倉庫安裝 vim-systemd 軟件包,使 unit 配置文件在 Vim 下支持語法高亮。

目標(target)啟動級別(runlevel)是一個舊的概念?,F在,systemd 引入了一個和啟動級別功能相似又不同的概念——目標(target)。不像數字表示的啟動級別,每個目標都有名字和獨特的功能,并且能同時啟用多個。一些目標繼承其他目標的服務,并啟動新服務。systemd 提供了一些模仿 sysvinit 啟動級別的目標,仍可以使用舊的 telinit 啟動級別 命令切換。獲取當前目標

不要使用 runlevel 命令了:

$ systemctl list-units --type=target

創建新目標在 Fedora 中,啟動級別 0、1、3、5、6 都被賦予特定用途,并且都對應一個 systemd 的目標。然而,沒有什么很好的移植用戶定義的啟動級別(2、4)的方法。要實現類似功能,可以以原有的啟動級別為基礎,創建一個新的目標 /etc/systemd/system/<新目標>(可以參考 /usr/lib/systemd/system/graphical.target),創建 /etc/systemd/system/<新目標>.wants 目錄,向其中加入額外服務的鏈接(指向 /usr/lib/systemd/system/ 中的單元文件)。

目標表

SysV 啟動級別Systemd 目標注釋
0runlevel0.target, poweroff.target中斷系統(halt)
1, s, singlerunlevel1.target, rescue.target單用戶模式
2, 4runlevel2.target, runlevel4.target, multi-user.target用戶自定義啟動級別,通常識別為級別3。
3runlevel3.target, multi-user.target多用戶,無圖形界面。用戶可以通過終端或網絡登錄。
5runlevel5.target, graphical.target多用戶,圖形界面。繼承級別3的服務,并啟動圖形界面服務。
6runlevel6.target, reboot.target重啟
emergencyemergency.target急救模式(Emergency shell)

切換啟動級別/目標systemd 中,啟動級別通過“目標單元”訪問。通過如下命令切換:

# systemctl isolate graphical.target

該命令對下次啟動無影響。等價于telinit 3 或 telinit 5。

修改默認啟動級別/目標開機啟動進的目標是 default.target,默認鏈接到 graphical.target (大致相當于原來的啟動級別5)。可以通過內核參數更改默認啟動級別:

小貼士: 可以省略擴展名 .target。

  • systemd.unit=multi-user.target (大致相當于級別3)
  • systemd.unit=rescue.target (大致相當于級別1)

另一個方法是修改 default.target。可以通過 systemctl 修改它:

# systemctl enable multi-user.target

命令執行情況由 systemctl 顯示:鏈接 /etc/systemd/system/default.target 被創建,指向新的默認啟動級別。該方法當且僅當目標配置文件中有以下內容時有效:

[Install]Alias=default.target

目前,multi-user.target、graphical.target 都包含這段內容。

日志systemd提供了自己日志系統(logging system),稱為 journal. 使用 systemd 日志,無需額外安裝日志服務(syslog)。讀取日志的命令:

# journalctl

默認情況下(當 Storage= 在文件 /etc/systemd/journald.conf 中被設置為 auto),日志記錄將被寫入 /var/log/journal/。該目錄是 systemd 軟件包的一部分。若被刪除,systemd 不會自動創建它,直到下次升級軟件包時重建該目錄。如果該目錄缺失,systemd 會將日志記錄寫入 /run/systemd/journal。這意味著,系統重啟后日志將丟失。

過濾輸出journalctl可以根據特定字段過濾輸出,例如:

顯示本次啟動后的所有日志:

# journalctl -b

不過,一般大家更關心的不是本次啟動后的日志,而是上次啟動時的(例如,剛剛系統崩潰了)。目前還沒有這項功能,正在 systemd-devel@lists.freedesktop.org 討論中。

目前的折中方案是:

# journalctl --since=today | tac | sed -n '/-- Reboot --/{n;:r;/-- Reboot --/q;p;n;b r}' | tac

以上命令輸出本日內的所有啟動信息。但要注意,如果日志很多,該命令執行時間會比較漫長。

動態跟蹤最新信息:

# journalctl -f

顯示特定程序的所有消息:

 # journalctl /usr/lib/systemd/systemd

顯示特定進程的所有消息:

# journalctl _PID=1

顯示指定單元的所有消息:

# journalctl -u netcfg

詳情參閱man journalctl、man systemd.journal-fields

日志大小限制如果按上面的操作保留日志的話,默認日志最大限制為所在文件系統容量的 10%,即:如果 /var/log/journal 儲存在 50GiB 的根分區中,那么日志最多存儲 5GiB 數據??梢孕薷?/etc/systemd/journald.conf 中的 SystemMaxUse 來指定該最大限制。如限制日志最大 50MiB:

SystemMaxUse=50M

詳情參見 man journald.conf.

配合syslog使用systemd提供了 socket /run/systemd/journal/syslog,以兼容傳統日志服務。所有系統信息都會被傳入。要使傳統日志服務工作,需要讓服務鏈接該 socket,而非 /dev/log(官方說明)。Arch 軟件倉庫中的 syslog-ng 已經包含了需要的配置。

設置開機啟動 syslog-ng:

 # systemctl enable syslog-ng

疑難解答 關機/重啟十分緩慢如果關機特別慢(甚至跟死機了一樣),很可能是某個拒不退出的服務在作怪。systemd 會等待一段時間,然后再嘗試殺死它。請閱讀這篇文章,確認你是否是該問題受害者。

短時進程無日志記錄若 journalctl -u foounit.service 沒有顯示某個短時進程的任何輸出,那么改用 PID 試試。例如,若 systemd-modules-load.service 執行失敗,那么先用 systemctl status systemd-modules-load 查詢其 PID(比如是123),然后檢索該 PID 相關的日志 journalctl -b _PID=123。運行時進程的日志元數據(諸如 _SYSTEMD_UNIT 和 _COMM)被亂序收集在 /proc 目錄。要修復該問題,必須修改內核,使其通過套接字連接來提供上述數據,該過程類似于 SCM_CREDENTIALS。

診斷啟動問題使用如下內核參數引導: systemd.log_level=debug systemd.log_target=kmsg log_buf_len=1M

禁止在程序崩潰時轉儲內存要使用老的內核轉儲,創建下面文件:

/etc/sysctl.d/49-coredump.confkernel.core_pattern = corekernel.core_uses_pid = 0

然后運行:

# /usr/lib/systemd/systemd-sysctl

同樣可能需要執行“unlimit”設置文件大小:

$ ulimit -c unlimited

原文:https://blog.linuxeye.com/400.html


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲欧洲视频在线| 国内揄拍国内精品| 九九精品在线播放| 中文日韩在线视频| 国产91色在线播放| 欧美孕妇性xx| 亚洲女人天堂色在线7777| 亚洲午夜久久久久久久| 欧美中文字幕视频在线观看| 亚洲免费高清视频| 国产精品视频久久久久| 最近的2019中文字幕免费一页| 日韩在线观看免费高清| 日韩专区中文字幕| 中文字幕综合一区| 91老司机精品视频| 精品视频9999| 国产精品免费久久久| 精品视频久久久久久| 亚洲欧美日韩中文视频| 亚洲欧美日韩成人| 26uuu国产精品视频| 国产精品扒开腿做爽爽爽男男| 另类天堂视频在线观看| 激情久久av一区av二区av三区| 午夜美女久久久久爽久久| 国产亚洲a∨片在线观看| 97视频免费看| 久久精品中文字幕免费mv| 亚洲欧美日韩天堂| 国产精彩精品视频| 国产精品女主播视频| 欧美激情中文网| 国产精品成人一区| 日韩在线观看网址| 色小说视频一区| 97国产精品人人爽人人做| 国产精品入口尤物| 成人亚洲综合色就1024| 国产精品香蕉在线观看| 久久久伊人欧美| 亚洲精品久久久久中文字幕欢迎你| 日本a级片电影一区二区| 久久97久久97精品免视看| 欧美成人性生活| 国产精品日韩专区| 国产欧美日韩中文字幕在线| 欧美成人精品在线播放| 久久久97精品| 亚洲伊人一本大道中文字幕| 久久久国产一区二区| 性色av香蕉一区二区| 日韩中文av在线| 欧美成年人在线观看| 九九精品在线观看| 米奇精品一区二区三区在线观看| 国产精品久久久久久久久粉嫩av| 国产成人综合亚洲| 91精品国产91久久久久久| 宅男66日本亚洲欧美视频| 福利一区福利二区微拍刺激| 九九热最新视频//这里只有精品| 91av成人在线| 91成人精品网站| 久久激情视频免费观看| 久久久久北条麻妃免费看| 一区二区三区高清国产| 色婷婷av一区二区三区久久| 久久激情视频免费观看| 亚洲图中文字幕| 久久久久国产一区二区三区| 欧美日韩亚洲一区二| 一本色道久久综合亚洲精品小说| 日韩精品免费在线视频观看| 欧美精品在线播放| 91精品在线观| 国产精品久久久久久亚洲影视| 国产在线a不卡| 成人黄色在线观看| 日韩精品免费在线视频| 欧洲中文字幕国产精品| 午夜精品一区二区三区在线| 秋霞午夜一区二区| 亚洲色图在线观看| 国产精品三级久久久久久电影| 久久99精品视频一区97| 亚洲欧美变态国产另类| 久久人91精品久久久久久不卡| 成人羞羞国产免费| 孩xxxx性bbbb欧美| 中文字幕欧美精品在线| 人体精品一二三区| 亚洲精品v欧美精品v日韩精品| 亚洲伊人成综合成人网| 国产亚洲精品va在线观看| 亚洲风情亚aⅴ在线发布| 久久成人精品一区二区三区| 成人乱人伦精品视频在线观看| 精品美女久久久久久免费| 欧美日本黄视频| 国产午夜精品视频免费不卡69堂| 亚洲天堂免费观看| 97视频在线观看成人| 日本久久久久久| 亚洲片在线资源| 久久精品国产精品亚洲| 91中文字幕在线观看| 亚洲第一精品福利| 欧美视频精品一区| 欧美精品久久久久久久久久| 国产精品日韩精品| 日韩国产高清污视频在线观看| 欧美日韩成人在线观看| 中文字幕亚洲一区二区三区| 日韩在线中文字幕| 8050国产精品久久久久久| 人人澡人人澡人人看欧美| 久久久在线观看| 欧美重口另类videos人妖| 亚洲第一综合天堂另类专| 日韩av最新在线| 亚洲成色www8888| 欧美午夜xxx| 久久久久久久激情视频| 一区国产精品视频| 成人免费自拍视频| 欧美激情精品久久久久久久变态| 久久九九免费视频| 国产精品视频区1| 一区二区成人精品| 亚洲精品日韩激情在线电影| 精品亚洲夜色av98在线观看| 欧美高清自拍一区| 国产精品久久久av久久久| 91亚洲精品久久久| 亚洲日本aⅴ片在线观看香蕉| 97精品伊人久久久大香线蕉| 亚洲综合av影视| 久久伊人91精品综合网站| 久久久久久亚洲精品中文字幕| 欧美大尺度激情区在线播放| 这里只有视频精品| 7m第一福利500精品视频| 国产精品成人一区| 爽爽爽爽爽爽爽成人免费观看| 精品国产依人香蕉在线精品| 亚洲欧美激情一区| 日韩中文在线不卡| 亚洲免费视频在线观看| 97婷婷涩涩精品一区| 欧美精品在线第一页| 亚洲精品久久久久久下一站| 亚洲人成电影在线播放| 这里只有精品丝袜| 欧美在线一级视频| 亚洲视频电影图片偷拍一区| 亚洲成色777777女色窝| 成人免费视频a| 亚洲成人网在线观看| 亚洲色图偷窥自拍| 日韩精品在线视频观看| 久久久久久久久久av| 中日韩美女免费视频网站在线观看| 日韩在线视频一区|