起動シーケンスの最後に飛ぶメッセージを一時停止(またはキャプチャ)するにはどうすればよいですか?


8

「起動シーケンス」1の終わりに向かって、ログインプロンプト2が表示される直前に、長い一連の診断メッセージが非常に速く飛んでいくのがわかります。

すべてではないにしても、この短命の出力を構成する行のほとんどは、以下に示す文字列のいずれかで始まります。

[  OK  ]
[FAILED]

... OKは緑色で、FAILEDは赤色です3

これらのメッセージが短すぎて私には読めません。

私の質問は:

これらのメッセージを読みやすくする方法はありますか?


頭に浮かぶ可能性のある解決策は次のとおりです(優先順):

  1. これらのメッセージをそのまま 4番で永続的なログファイルにティーイン(または単にリダイレクト)します。
  2. ページングタイプのメカニズムを有効にする(Press any key to continue...);
  3. これらのメッセージが出力された後、(構成可能な長さの)ポーズを挿入する。
  4. いくつかのキー(またはキーの組み合わせ)を有効にして、画面への出力を一時停止します5

編集:私がこれまでに得たコメントに基づいて、私はできる限り強調しましたが、上記の(1)の逐語的な言葉は理解されていないか、真剣に受け取られていないと結論付けなければなりません。フラッシュできたら…


EDIT2meuhがコメントで与えた提案は私に有望であるように見えますが、まだ機能させることができていません。これが私がしたことです:

まず、の最後に次のコードを追加しました/etc/rsyslog.conf

# Save boot messages also to boot.log
local7.* /var/log/boot.log

...そして再起動しました。通常の診断メッセージが飛び交うのを見ましたが、/var/log/boot.logファイルは作成されませんでした。

次に、(確かにありそうもないことですが)/var/log/boot.logがすでに存在していなければならないというイベントでrsyslog書き込みができるようにして、(rootとして)実行しました。

touch /var/log/boot.log
chgrp adm /var/log/boot.log
chmod 640 /var/log/boot.log

... chgrpchmodコマンドは、の所有権と権限を/var/log/boot.log、にある他のすべてのログファイルの所有権と権限と一致させることを目的としています/var/log。その後、再起動し、メッセージなどを確認しました/var/log/boot.log。この再起動後、ファイルは空のままでした。

(の権限をに変更したときに、同じ結果が得られませんでし/var/log/boot.log666。)

私はgrep「の出力編journalctl --bootと下のファイル/var/log、私は私で何かのゆがんを指していると考えることができ何のためにrsyslog、しかし、何も見つかりませんでした。(私はにあまり詳しくないrsyslogので、私の検索はかなり無能だったと思います。)

これまでに行ったことは、目的のログを有効にするのに十分ではないことは明らかです。私は今私が行方不明のものを探しています。ただし、関連するドキュメントを見つけることはできませんでした。たとえば、何であるかを説明することはありませrsyslog.conf(5)ん。rsyslogd(8)local7rsyslog.conf(5)


EDIT3

ディストリビューション情報:

$ lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description:    Debian GNU/Linux 8.3 (jessie)
Release:    8.3
Codename:   jessie
$ uname -a
Linux myhost 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt20-1+deb8u3 (2016-01-17) x86_64 GNU/Linux

EDIT4

追加の関連する可能性のある情報:

$ cat /lib/systemd/system/rsyslog.service
[Unit]
Description=System Logging Service
Requires=syslog.socket
Documentation=man:rsyslogd(8)
Documentation=http://www.rsyslog.com/doc/

[Service]
Type=notify
ExecStart=/usr/sbin/rsyslogd -n
StandardOutput=null
Restart=on-failure

[Install]
WantedBy=multi-user.target
Alias=syslog.service
$ cat /proc/$(pgrep rsyslogd)/limits
Limit                     Soft Limit           Hard Limit           Units     
Max cpu time              unlimited            unlimited            seconds   
Max file size             unlimited            unlimited            bytes     
Max data size             unlimited            unlimited            bytes     
Max stack size            8388608              unlimited            bytes     
Max core file size        0                    unlimited            bytes     
Max resident set          unlimited            unlimited            bytes     
Max processes             128529               128529               processes 
Max open files            1024                 4096                 files     
Max locked memory         65536                65536                bytes     
Max address space         unlimited            unlimited            bytes     
Max file locks            unlimited            unlimited            locks     
Max pending signals       128529               128529               signals   
Max msgqueue size         819200               819200               bytes     
Max nice priority         0                    0                    
Max realtime priority     0                    0                    
Max realtime timeout      unlimited            unlimited            us        

$ sudo ls /proc/$(pgrep rsyslogd)/fd | wc -l
10

1つまり、マシンを(再)ブートしたときに行われます。

2 FWIW、multi-user.target私のデフォルトです。

3残りのテキストは、黒い背景の上にすべて白いです。これは、後続のログインプロンプトにも当てはまります。

4起動シーケンス中に表示されたこれらのメッセージの正確なテキストを表示させない解決策はまったく受け入れられません。常に、これらの診断メッセージが何を参照しているかに精通していないため、元のメッセージによって伝えられた基礎となる情報が言い換えられ、他の複数のメッセージに広がっている可能性があるすべての方法を認識することは不可能です、(のみをオンラインで検索することによって、他のメッセージなどに包摂される正確な内容はすべて、私は元のメッセージの私は問題の解決策を見つけるのいずれかの希望を持っています。)を含め、これまでに試したjournalctl -bdmesg私を与えることを失敗しました元のメッセージをそのまま。たとえば、スタートアップを実行すると、赤FAILEDが1つしか表示されませんが、がjournalctl --boot | grep FAILED | wc -l返され0、が返されjournalctl --boot | grep -i FAILED | wc -l ます1086。これらのどちらも私が探しているものではありません。

5私のシステムでは、このようなキーまたはキーの組み合わせを押すのに1秒もかかりません。そのようなキープレスが発生しなければならない間隔の期間を構成できる場合を除いて、キープレスベースのソリューションは非現実的すぎて、最後の手段以外の操作にはなりません。また、FWIW、メッセージが点滅したときにキーまたはキーを押してみましたが、どちらも違いはありませんでした。Scroll
Lock
Pause/
Break


4
journalctl -b(ルートとして)それはあなたに正確に与えませんか?すなわち、起動シーケンス中に現れたこれらのメッセージの正確なテキストを見ますか?
don_crissti 2016

2
システムによっては、ファイルにメッセージが含まれている場合があります/var/log/boot.log
meuh

2
@Theophrastus:なぜ多くのLinuxユーザーが嫌悪感を抱くのかがわかり始めていますsystemd。自分のランクに参加しようとしています...私はfn 4を編集して(さらに)理由を説明 journalctl --boot | grep -i failしましたを探しています。
kjo

3
kjo、起動時のメッセージとに記録されたメッセージとの唯一の違いjournal[OK]/ の存在です[FAILED]。それ以外のメッセージは同じです。故障したユニットを診断/トラブルシューティングする正しい方法systemctl、あなたが知っているとおりです。キーボードショートカットで起動プロセスを一時停止できるかどうかはわかりません(CTRL + S / CTRL + Qは機能するはずですが、少なくともi915 / KMSでは機能しません)。それでも、Shift + PgUp / Downを使用して、ブートメッセージのクリアを無効にし、 TTY1でそれらのメッセージをスクロールできます。
don_crissti 2016

2
:たぶん、次のQ / Aは何か与えsuperuser.com/questions/480370/...
ラルフRönnquist

回答:


1

カーネルコマンドライン引数(などconsole=tty0 console=ttyS0,115200n8)を設定して、シリアルコンソールに送信する代わりに、シリアルポートでリッスンするデバイスは、単にテキストのストリームであるため、単にログに記録できます。

そして、とにかくこれをログに記録しないと、systemdはばかげています。Openrcは/var/log/rc.logでそれを行います。また、それがsystemdでない場合は、おそらくinittabを変更して、tty1にgetty / Xorgを配置しないようにし、(Xorgなどの)何かが他の場所に切り替わらないようにし、古いテキストがそのまま残る場合があります(古い場合と同じように) pre-systemd openSUSE)。または、別のttyにコピーします(これは、syslogがinittabではなくそれを実行していると思います...そして、多くのLinuxインストーラーがtty9 +でこれを実行しているのを見る可能性があります)。それが切り替わると、スクロールして戻りません(shift + pgup )、ただしおそらく1ページの出力になります。おそらく、systemdについて詳しく知っている誰かが、inittabと同等の新しい機能を知っているので、それを変更できます。


あなたがコメントを読むならば、あなたはそれsystemdがこのものを記録するのを見ます。
don_crissti 2016年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.