我正在使用包含以下内容的 Kickstart 脚本安装 Scientific Linux 7(但我没有理由认为所有 RHEL 分支都不是这种情况):
%post --interpreter /bin/bash --log /root/postinstall.log
# do stuff
%end
安装后,日志文件将按预期进行检查。
但是,使用 SL 6 我曾经能够更改为 TTY 2 并使用tail -f /mnt/sysimage/root/postinstall.log
.现在,日志似乎已创建,但直到安装后过程完成后才会写入内容。
有没有办法监控这一进展?我在/tmp/
、/var/log/
、 、中查找了日志文件/mnt/sysimage/tmp/
,但/mnt/sysimage/var/log/
没有任何运气。如果日志文件不可用,是否可以通过 Kickstart 安装后脚本将输出发送到另一个 TTY?
尝试1:
%post --interpreter /bin/bash
(
# do stuff
echo foo
echo bar
echo baz
) | tee /root/postinstall.log > /dev/tty1
%end
这几乎有效,但是,行结尾似乎是一个问题。它只在屏幕上执行 LF,而不执行 CR。上面在 TTY1 上输出:
foo
bar
baz
尝试2:
%post --interpreter /bin/bash --log /root/postinstall.log
echo "Changing output to TTY 3; press Alt-F3 to view" > /dev/tty1
exec 1>/dev/tty3 2>&1
#do stuff
%end
这会将数据正确输出到屏幕,但不记录任何内容。它还具有奇怪的副作用,即在脚本完成后将重新启动延迟大约 10 分钟。
答案1
将输出重定向到 /dev/pts/0。
答案2
终于弄清楚了:
%post --interpreter /bin/bash
printf "Changing output to TTY 3; press Alt-F3 to view\r\n" > /dev/tty1
{
# do stuff
} 2>&1 | tee /root/postinstall.log > /dev/tty3
%end
正如问题中提到的,屏幕上/dev/tty1
似乎存在行结尾问题,因此如果我重定向到,我的第一次尝试可能会起作用/dev/tty3
。但这个解决方案避免了子shell并且还重定向STDERR。
答案3
exec < /dev/tty6 > /dev/tty6
chvt 6
<scripts here>
chvt 1
这对我有用,我可以监控 %post 而无需翻转 ttys
答案4
如果您使用的话,问题出在回车符上
echo "message" >/dev/tty1
尝试一下
echo -e "message\r" >/dev/tty1