
讀取和睡眠(使用openvt -w
)都被執行(read -p
顯示訊息),但無法暫停啟動。
我嘗試了多種選項的組合/etc/systemd/system/<service>
:
Type=oneshot
TimeoutSec=5000
StandardInput=tty
用例僅在服務腳本停止運行後載入 GUI。我需要在 GUI 加載之前將 sshfs(還有多個用戶和主機名稱選項)安裝為 /home 並將“凍結”/home 作為本地分區(預設)。
答案1
「暫停啟動」並非完全適用於 systemd; systemd 並行運行多個服務。
但是,透過向服務新增“依賴項”,您基本上可以指定“啟動應暫停”並等待您的服務的時間點。
對於上面的用例,添加到/etc/systemd/system/<service>
:
[Unit]
Description=commands to run before GUI loads
Before=display-manager.service
這將迫使display-manager.service
等待<service>
。就我而言,<service>
涉及使用者輸入(對於那些沒有獲得連接的讀者),有效地「暫停啟動」。
以下還有其他評論者表達懷疑的評論:
此類事情有一個用例 - 解鎖加密分割區。由於 systemd 中的錯誤 (bugs.freedesktop.org/show_bug.cgi?id=88483),無法在啟動期間使用開箱即用的 systemd 機制解鎖加密的多設備 Btrfs 陣列。您需要建立自己的 systemd 服務文件,經過數小時的嘗試,這個答案在我的服務文件中缺少了我需要的部分。謝謝阿格爾。