以下を含むキックスタートスクリプトを使用して、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/
でログファイルを探しました。ログファイルが利用できない場合、キックスタートのインストール後スクリプトから別のTTYに出力を送信する方法はありますか?
試行1:
%post --interpreter /bin/bash
(
# do stuff
echo foo
echo bar
echo baz
) | tee /root/postinstall.log > /dev/tty1
%end
これはほぼ機能しますが、行末が問題のようです。画面上のCRではなく、LFのみを実行します。上記は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分ほど遅らせるという奇妙な副作用もあります。
最終的にこれを理解しました:
%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
にリダイレクトした場合、最初の試みはおそらくうまくいきました。ただし、このソリューションはサブシェルを回避し、STDERRもリダイレクトします。
代わりに、出力を/ dev/pts/0にリダイレクトしてください。