Systemd

Systemd/agetty:會話結束時停止機器

  • October 24, 2013

使用 LXC 執行基於 systemd 的容器,它會自動進入容器上的控制台會話。通過創建和修改/etc/systemd/system/console-getty.service以具有如下所示的ExecStart行:

ExecStart=-/sbin/agetty --noclear -a <username> -s console 115200,38400,9600

可以跳過登錄會話並直接進入以特定使用者身份執行的會話。

我想要的是在此會話結束時自動停止機器。有沒有辦法在systemd或agetty中配置它?作為參考,主機是 Ubuntu 12.04,容器執行的是相當新的 Arch 基礎。

答案可以在console-shell.service

ExecStopPost=-/bin/systemctl poweroff

順便說一句,您無需製作副本console-getty.service即可進行這些修改。嘗試以下操作:

# rm /etc/systemd/system/console-getty.service
# mkdir /etc/systemd/system/console-getty.service.d
# cat > /etc/systemd/system/console-getty.service.d/custom.conf << EOF
[Service]
ExecStart=
ExecStart=-/sbin/agetty --noclear -a <username> -s console 115200,38400,9600
ExecStop=-/bin/systemctl poweroff
EOF
# systemctl daemon-reload

第一個空ExecStart=條目清除從 繼承的值/lib/systemd/system/console-getty.service。有關此自定義 systemd 單元文件的方法的更多資訊,請參閱systemd.unit(5)

與單元文件一起,foo.service目錄foo.service.d/可能存在。該目錄下所有後綴為後綴.conf的文件都會在文件本身解析完成後進行解析。這對於更改或向單元添加配置設置很有用,而無需修改其單元文件。確保包含的文件在任何指令之前具有適當的節標題。

引用自:https://unix.stackexchange.com/questions/66029