進一步閱讀

進一步閱讀

我正在將 SysV init 樣式文件轉換為 Systemd Unit 文件,它的 init 部分區塊如下所示:

### BEGIN INIT INFO
# Provides:          ifcheck 
# Required-Start:    $local_fs 
# Required-Stop:
# Should-Start:
# Should-Stop:
# Default-Start:     S
# Default-Stop:      
# Short-Description: Network interfaces check & replace
# Description:       Checks if the interfaces were corrupted or if the special section is missing. If so, a default version will be copied over.
### END INIT INFO

我知道運行等級 0-6 對應於各種 systemd 目標:

╔══════════════════════╦═══════════════════╗
║ Run Level (SysVinit) ║  Systemd Target   ║
╠══════════════════════╬═══════════════════╣
│ Run level 0          │ poweroff.target   │
├──────────────────────┼───────────────────┤
│ Run level 1          │ rescue.target     │
├──────────────────────┼───────────────────┤
│ Run level 2          │ multi-user.target │
├──────────────────────┼───────────────────┤
│ Run level 3          │ multi-user.target │
├──────────────────────┼───────────────────┤
│ Run level 4          │ multi-user.target │
├──────────────────────┼───────────────────┤
│ Run level 5          │ graphical.target  │
├──────────────────────┼───────────────────┤
│ Run level 6          │ reboot.target     │
├──────────────────────┼───────────────────┤
│ Emergency            │ emergency.target  │
└──────────────────────┴───────────────────┘
(According to https://www.tecmint.com/change-runlevels-targets-in-systemd/ )

但我以前從未見過S運行級別。我見過一些定義表明它適用於單一用戶儘管還有其他人將其定義為其他運行級別的同義詞還是其他人沒有確定的定義

我知道我正在使用的版本很可能是Linux 標準基礎規範因為緊接在初始化訊息塊之後的是lsb 初始化函數(來源自. /lib/lsb/init-functions)。該系統還運行 Debian 8 Jessie。

我應該在運行等級的等效 systemd 單元檔案中放置什麼目標S

答案1

S在 systemd 中沒有直接對應關係。該systemd-sysv-generator程式不處理此類 van Smoorenburgrc腳本。

德班曾經擁有該程式的修補版本,包裝了一個在服務單元內rc使用的腳本S,沒有預設依賴項,並且是所需要的sysinit.target。這是不完美的,但後來全部的操作systemd-sysv-generator是不完美的,因為沒有萬能的機械方法來翻譯範·斯穆倫堡rc腳本。

Debian systemd 人員早在 2016 年 7 月就廢除了該補丁,當時他們認為rcDebian 中使用的所有 van Smoorenburg 腳本S都已被適當的服務單元取代。你的似乎是自家種植的。

在這種情況下,您最好完全忘記S運行等級。我的有根據的猜測,僅基於描述,您真正應該製作的是一個服務單元,它是:

預設依賴項=否
After=local-fs.target
之前=network-pre.target
Wants=network-pre.target
Wanted-By可能是合適的basic.target

根據您的服務的實際用途,之後的訂購local-fs.target很可能是多餘的。但這是只有你才能決定的事情。

進一步閱讀

相關內容