以下は、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
ログファイルにログインする必要があります。必要に応じてまだこれを行いたいのですが、ログインせずに自動的に出力を表示できるかどうかを知りたいです。
1つの注目すべき点は、システムが完全に非対話型になることを望まないことです。たとえば、このスクリプトが続いている間に++タスクを実行Ctrlし、ログインしていくつかの管理タスクを実行したいとします。AltF2
Ctrl+Cこの特定のスクリプトを実行時に終了できない場合にも優先されます。しかし、SIGINTを処理するために設定するのは簡単かもしれないと思いますので、言及したことを忘れてください。
可能ですか?これにはCentos 7が使用されます。
答え1
あなたが指摘したように、ルートとして/dev/tty1
。
スクリプトが標準出力に書き込む場合は、次を使用できます。
yourscript | tee -a /your/log/file > /dev/tty1
スクリプトがログファイルに直接書き込む場合、操作は容易ではありません。ログファイルを追跡して新しいコンテンツを表示する必要があります。この場合、print
出力を簡単に倍増できるいくつかのルーチンを使用するようにスクリプトを変更する方が簡単です。
コンソールに最初にログインしても、シェルは割り込みを送信する場所がわからないため、Ctrl+を使用してそれを停止することはできません。C
/dev/tty2
起動設定に応じて、グラフィックがログインしているかどうかにかかわらず、最初の画面が壊れるのを防ぐためにasを使用できます。また、最初のテキストが後に表示されないように改行文字でログを開始することも検討する必要があります。
machinename login:
画面上部にヒントが表示されます。
私はこのように書いたコンソールで後ろにスクロールする方法がないと思いますが、おそらくそれは重要ではありません。