在“启动序列” 1即将结束时,我看到一连串漫长的诊断消息飞速地飞过,就在我看到登录提示2之前。
AFAICT,构成这个短暂输出的大部分(如果不是全部)行都从下面显示的任一字符串开始
[ OK ]
[FAILED]
...其中OK
绿色FAILED
为,红色为3。
这些消息闪烁太短,我无法阅读。
我的问题是:
有没有一种方法可以使这些消息更易于阅读?
我想到的可能解决方案包括(按优先顺序排列):
- 发球(或简单地重定向)这些消息逐字 4到一些持久日志文件;
- 启用分页类型机制(
Press any key to continue...
); - 在打印这些消息后插入一个暂停(可配置的长度);
- 使某些键(或组合键)暂停输出到屏幕5。
编辑:根据我到目前为止的评论,我必须得出结论,即使我已尽我所能地强调,上述(1)中的逐字这个词还是不被理解或未被重视。如果可以的话,我会使其闪烁...
EDIT2:meuh在评论中给出的建议对我来说很有希望,但是我还无法使它生效。这是我所做的:
首先,我在的末尾添加了以下内容/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
... chgrp
和chmod
命令旨在使所有权和权限/var/log/boot.log
与之下的所有其他日志文件的所有权和权限匹配/var/log
。然后,我重新启动,看到了消息等。/var/log/boot.log
此重新启动后,文件仍然为空。
(我得到了相同的非结果,当我改变的权限/var/log/boot.log
来666
。)
我想出的所有内容都grep
输出到journalctl --boot
或其中的文件下/var/log
,这可能表示我的问题了rsyslog
,但没有找到任何东西。(我对一点都不熟悉rsyslog
,所以我确定搜索不力。)
显然,到目前为止,我所做的不足以启用所需的日志记录。我现在正在寻找我所缺少的东西。但是,我找不到太多相关的文档。例如,既不rsyslog.conf(5)
也不rsyslogd(8)
打算解释什么local7
(rsyslog.conf(5)
至少足够亲切地提及一次,而没有提供任何进一步的信息)。
编辑3
发行信息:
$ 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
编辑4
其他可能相关的信息:
$ 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 -b
和dmesg
失败在给我逐字记录原始消息。例如,当我运行启动时,我只能看到一个红色FAILED
,但journalctl --boot | grep FAILED | wc -l
返回0
,然后journalctl --boot | grep -i FAILED | wc -l
返回1086
。这些都不是我要找的东西。
5在我的系统中,我只有不到一秒钟的时间可以按这样的键或组合键,并且也没有警告过这个短暂的间隔何时开始。除非人们能够配置必须进行这种按键操作的间隔时间,否则任何基于按键的解决方案都是不切实际的,只能作为最后一种手段来解决。另外,FWIW,我确实尝试在消息闪烁时按或键,但两者没有任何区别。Scroll
LockPause/
Break
/var/log/boot.log
systemd
,而我自己也要加入他们的行列...我编辑了fn 4来拼出(甚至更多)为什么journalctl --boot | grep -i fail
,例如,为什么 不是我在找。
journal
是[OK]
/ 的存在[FAILED]
。这些消息在其他方面是相同的。可以知道,诊断/排除故障单元的正确方法是通过systemctl
。我不知道您是否可以通过键盘快捷键来暂停启动过程(他们说CTRL + S / CTRL + Q应该可以,但是至少在i915 / KMS上不起作用)。不过,您可以禁用清除启动消息,并使用Shift + PgUp / Down在TTY1上滚动浏览这些消息。
journalctl -b
(作为root)给你正是这样,即看到这些消息的确切文本,因为他们在启动过程中出现?