如何在成功启动后禁用串行控制台(systemd / grub2)

我在启动过程中使用了grub2systemd(而不是inittab)的centos7启用串行控制台,

为了安全起见,我想在启动完成之后,在引导的最后一次撤销串行input/输出。

我怎样才能做到这一点?

更新:

我发现,通过系统服务,即使grub2启动它,控制台也可以通过它来识别/启用,所以我认为这会closures它。

systemctl stop [email protected]

如果所有其他服务都已联机,则在完全成功启动后,如何自动实现这一function。 我可以使用rc.local但这是init.d的遗产,并没有考虑到其他服务已经正常上网。

这感觉非常哈克,但它的工作。 机器启动后会停止串口terminal。

/etc/systemd/system/killconsole.service:

 [Unit] Description=kill console after boot After=default.target [Service] Type=simple ExecStart=/bin/systemctl stop [email protected] [Install] WantedBy=default.target 

然后只需运行systemctl enable /etc/systemd/system/killconsole.service启用该单元。

您也可以使用独立的定时器单元触发上述操作,直到启动X分钟后才会触发。 如果你尝试一下,一定要从服务中取出Install部分,然后运行一个systemctl disable来将它从default.target的希望列表中删除。

请注意,“成功启动”的定义可能会有所不同。 例如,如果该盒子的networking被占用,所有的服务可能启动正常,但你可能仍然需要串行访问。 因此,我强烈推荐创build一个ExecStartPre确保系统处于活动状态(在networking上)并将其置于ExecStartPre选项中。 如果Pre脚本返回失败的退出代码,则该服务将不会运行,串行控制台也不会被禁用。

这可以实现我掩盖的服务:

 systemctl mask [email protected] 

荣誉这个答案 。