在启动过程中以 root 身份运行脚本并在默认的 Linux 终端中显示?

在启动过程中以 root 身份运行脚本并在默认的 Linux 终端中显示?

以下是我配置 kickstart 系统初始化脚本的方法(这是一个 kickstart conf 脚本片段):

...

%post --log=/root/ks-post.log --interpreter /bin/bash

cd /root
curl --silent --show-error --retry 5 -O "https://mysecurewebsite.net/init-script7.sh"
cp init-script.sh /etc/init.d/initializesystem
chmod +x /etc/init.d/initializesystem
[ ! -d /etc/rc.d ] && echo "/etc/rc.d/ not present, creating dir." && mkdir /etc/rc.d
[ ! -d /etc/rc.d/rc3.d ] && echo "/etc/rc.d/rc3.d/ not present, creating dir." && mkdir /etc/rc.d/rc3.d
ln -s /etc/init.d/initializesystem /etc/rc.d/rc3.d/S30initializesystem

%end

这非常有效,并且在操作系统安装后首次启动时在后台运行,无人值守。

不过,我想通过让默认启动 tty 显示此脚本的标准输出来使其更加友好initializesystem。目前,我有脚本将其进度写入日志文件,并且我必须以 root 身份登录并tail -f登录日志文件。如果我愿意,我仍然希望能够执行此操作,但我想知道是否也可以让它自动显示输​​出而不需要我登录。

需要注意的一件事是,我不想让系统完全非交互式。例如,我希望能够在该脚本继续进行时Ctrl+ Alt+F2并登录以进行一些管理。

Ctrl如果+C无法在运行时杀死这个特定的脚本,我也更喜欢它,尽管我怀疑这可能是一个很容易设置来处理 SIGINT 的事情,所以忘记我提到过它。

这可能吗?这里使用Centos 7。

答案1

正如您自己指出的那样,作为 root 您可以将内容写入/dev/tty1.

如果您的脚本确实写入标准输出,您可以使用:

yourscript | tee -a /your/log/file > /dev/tty1

如果脚本直接写入日志文件,事情就不那么容易了,您必须跟踪日志文件并显示新内容。在这种情况下,更改脚本以使用某些print例程可能会更容易,在这些例程中您可以轻松地将输出加倍。

即使您首先在控制台上登录,也无法通过使用Ctrl+来停止这种情况C,因为您的 shell 无法知道将中断发送到何处。

根据您的启动偏好,无论您是否有图形登录,您可能都希望使用/dev/tty2as 来避免破坏第一个屏幕。您还应该考虑以换行符开始日志,以便第一个文本不会出现在

machinename login:

屏幕顶部的提示。

我认为没有办法在您以这种方式写入的控制台上向后滚动,但这可能并不重要。

相关内容