Systemd/agetty:会话结束时停止机器

Systemd/agetty:会话结束时停止机器

使用运行基于 systemd 的容器的 LXC,可以自动进入容器上的控制台会话。通过创建并修改/etc/systemd/system/console-getty.service为具有ExecStart如下所示的行:

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

可以跳过登录会话并直接进入以特定用户身份运行的会话。

我希望机器在该会话结束时自动停止。有没有办法在 systemd 或agetty 中配置它?作为参考,主机是 Ubuntu 12.04,容器运行的是最新的 Arch 基础。

答案1

答案可以在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 单元文件的方法的更多信息,请参阅系统单元(5):

foo.service目录可能与单元文件一起foo.service.d/存在。该目录中所有带有后缀的文件.conf将在文件本身解析后进行解析。这对于更改或添加单元的配置设置非常有用,而无需修改其单元文件。确保包含的文件在任何指令之前都有适当的节标题。

相关内容