web-dev-qa-db-ja.com

キックスタートのインストール後のログを監視できません

以下を含むキックスタートスクリプトを使用して、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分ほど遅らせるという奇妙な副作用もあります。

2
miken32

最終的にこれを理解しました:

%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もリダイレクトします。

0
miken32

代わりに、出力を/ dev/pts/0にリダイレクトしてください。

1
Andy