将启动脚本输出发送到虚拟终端

将启动脚本输出发送到虚拟终端

我有一个符号链接的脚本,/etc/rc.d/rc3.d/S30initialize基本上使它在进入运行级别 3 时被调用。

我希望该脚本的输出出现在虚拟终端上。例如在屏幕的默认显示上。所以我在这个脚本中所做的就是将所有内容包装在里面

(
  set -e
  set -x

  .... install some stuff, etc

) 2>&1 | tee -a /etc/init.log > /dev/tty1

所以这工作正常,但发生的情况是输出流使它很好地显示在屏幕上(在启动内核消息结束时),但大约一秒钟后出现 tty 登录提示并“覆盖它”。

在脚本执行结束时,我经常可以发现登录到此/etc/init.log

tee: write error

我的问题是,有什么方法可以暂时或永久禁用 tty 登录提示tty1吗?如果需要的话,我很乐意使用 Ctrl+Alt+F2 登录计算机。

我也尝试将其更改为不使用管道,如下所示:) 2>&1 | tee -a /etc/init.log /dev/tty1但这遇到了同样的问题(它似乎不再产生错误tee: write error)。

我最感兴趣的是在 Centos 7 上调整此行为。

顺便说一句,当我尝试在 Raspberry Pi 上做类似的事情时,我确实使用了一种稍微不同的启动时运行方法:我向 中添加了命令rc.local,所有内容都毫无问题地进入主终端屏幕。

所以也许我可以尝试一下,或者也许还有另一种方法——也许我可以在运行被定向到的子 shell 之前长时间暂停以等待登录提示出现/dev/tty1。这样,不再是登录提示踩在输出流上,而是我的脚本踩在输出流上。

相关内容