当内核启动时,它会为每个 SATA 设备打印出这样的行:
[ 0.919450] ata2.00: ATA-8: ST2000DM001-1CH164, CC24, max UDMA/133
[ 0.919487] ata2.00: 3907029168 sectors, multi 16: LBA48 NCQ (depth 31/32), AA
Run Code Online (Sandbox Code Playgroud)
这些字段是什么意思?
我找到了两种打印引导消息的方法,一种使用 dmesg,另一种使用文件 /var/log/boot.log 的内容:
/var/log/boot.log 文件的内容是:
fsck from util-linux 2.20.1
/dev/loop0: clean, 263563/2271232 files, 7843644/18169856 blocks
* Starting configure network device security^[[74G[ OK ]
* Starting configure network device security^[[74G[ OK ]
* Starting configure network device^[[74G[ OK ]
* Starting Mount network filesystems^[[74G[ OK ]
* Starting Failsafe Boot Delay^[[74G[ OK ]
* Stopping Mount network filesystems^[[74G[ OK ]
* Starting Bridge socket events into upstart^[[74G[ OK ]
* Starting mDNS/DNS-SD daemon^[[74G[ OK ]
* Starting Userspace bootsplash^[[74G[ OK …Run Code Online (Sandbox Code Playgroud) Linux 内核在环形缓冲区中不断记录段错误。
a.out[25415]: segfault at 8049604 ip 08049604 sp bf88e3fc error 15 in a.out[8049000+1000]
Run Code Online (Sandbox Code Playgroud)
有没有办法暂时禁用它?我的用例是我正在运行一个测试套件,它会做各种疯狂的事情,我不想在dmesg那个时间段看到段错误。 dmesg -c不是一个选项,因为我被迫使用的测试框架正在分析 dmesg 输出,我不能只是在中间清除它。
sysctl -a如果有一些内核参数,我正在查看输出,但我没有看到任何有用的东西。kernel.print-fatal-signals看起来很有希望,但这只是为了显示更详细的信息。
我有一个 RHEL 5 系统:
[root@myhost ~]# cat /etc/redhat-release
Red Hat Enterprise Linux Server release 5.11 (Tikanga)
Run Code Online (Sandbox Code Playgroud)
当我运行时dmesg,我收到一条奇怪而令人不安的消息:
[root@myhost ~]# dmesg | grep -i worm
Worm initializing...<1>done.
Run Code Online (Sandbox Code Playgroud)
这个消息是什么意思,它来自哪里?
我的 centos 7 上有 iptables。我的防火墙被禁用。如何记录我的 iptables 事件?在 debian 上它是 dmesg 选项,但我不知道如何在 centos 上设置它。
我想记录所有 iptables 事件。没有具体规定。
当/dev/kmsg在尾随消息的同时写入消息时/proc/kmsg,消息会非常随机地出现,而 in 永远不会出现在/var/log/kern.log.
但是,dmesg正确获取所有消息。
例子
# Terminal 1
sudo tail -f /proc/kmsg
# Terminal 2
tail -f /var/log/kern.log
# Terminal 3
sudo sh -c 'echo "<1> Kernel log message" > /dev/kmsg'
sudo sh -c 'echo "<1> Kernel log message" > /dev/kmsg'
sudo sh -c 'echo "<1> Kernel log message" > /dev/kmsg'
sudo sh -c 'echo "<1> Kernel log message" > /dev/kmsg'
Run Code Online (Sandbox Code Playgroud)
结果:
# Terminal 1
# The message is shown at irregular …Run Code Online (Sandbox Code Playgroud) 有没有办法像在 Linux上使用( ) 选项一样在 FreeBSD 上实时观看dmesg?--follow-wdmesg
当我们在 rhel 7.2 上运行以下 dmesg 时,我们得到关于 assuming drive cache
dmesg --level=err
[ 5.325381] sd 0:0:0:0: [sda] Assuming drive cache: write through
[ 5.325492] sd 0:0:5:0: [sde] Assuming drive cache: write through
[ 5.325637] sd 0:0:3:0: [sdc] Assuming drive cache: write through
[ 5.325667] sd 0:0:4:0: [sdd] Assuming drive cache: write through
[ 5.326309] sd 0:0:2:0: [sdb] Assuming drive cache: write through
[ 10.277944] piix4_smbus 0000:00:07.3: SMBus Host Controller not enabled!
Run Code Online (Sandbox Code Playgroud)
知道这个内核错误是什么意思吗?
我已阅读 Redhat 帖子 - https://access.redhat.com/solutions/42752
但不清楚解决方案是什么?
注意 - 我必须说服务器在意外重启之后
每次启动笔记本电脑时,我都会看到此警告,并从dmesg中得到以下输出:
[ 2.895604] Dev loop0: unable to read RDB block 8
[ 2.895641] loop0: unable to read partition table
[ 2.895936] loop0: partition table beyond EOD, truncated
Run Code Online (Sandbox Code Playgroud)
这个警告是什么意思?我应该担心吗?我有一块 SSD,看起来运行良好。
我从维基百科上看到RDB意味着刚性磁盘块。
当我运行fdisk -l时我得到
Disc /dev/loop0: 4 KiB, 4096 bytes, 8 sectors
Unities: sector of 1 * 512 = 512 bytes
Sector size (logic/physic): 512 bytes / 512 bytes
I/O size (minimal/optimal): 512 bytes / 512 bytes
Run Code Online (Sandbox Code Playgroud) POST 后,BIOS 后屏幕,GRUB 后;当我在插入 SD 卡或 USB 记忆棒的情况下启动 Debian 时,首先在屏幕上弹出的东西之一(很快,我什至都没有注意到)看起来有点像:
[sdX] no caching page mode present
Run Code Online (Sandbox Code Playgroud)
text, text, X 大约从一长串内容的一半开始,文本明显变小,就在窗口管理器启动之前,我看到了非常熟悉的设备消息(dmesg无论如何,这不是代表什么吗?)
[sdX] assuming drive cache. write through
Run Code Online (Sandbox Code Playgroud)
那么,从技术上讲,这两个状态之间有什么区别?正在缓存什么?页面是什么?什么是“写透”?什么排除了驱动器缓存的假设,以便在启动后直接进行写入?
在 RHEL 6 中,我有内核参数:
printk.time=1
Run Code Online (Sandbox Code Playgroud)
这样我的 dmesg 就会有一个时间戳。但是它在重新启动后的几秒钟内显示,如下所示:
[12.23456]
Run Code Online (Sandbox Code Playgroud)
我找到了一个脚本,您将其放置在 .bashrc 中,它将秒数转换为 HR 日期。
dmesg_with_human_timestamps () {
$(type -P dmesg) "$@" | perl -w -e 'use strict;
my ($uptime) = do { local @ARGV="/proc/uptime";<>}; ($uptime) = ($uptime =~ /^(\d+)\./);
foreach my $line (<>) {
printf( ($line=~/^\[\s*(\d+)\.\d+\](.+)/) ? ( "[%s]%s\n", scalar localtime(time - $uptime + $1), $2 ) : $line )
}'
}
alias dmesg=dmesg_with_human_timestamps
Run Code Online (Sandbox Code Playgroud)
这很好用,我的 dmesg 输出现在看起来像这样:
[Fri Jun 10 13:07:14 2016]
Run Code Online (Sandbox Code Playgroud)
但是我如何更改代码以使其看起来像这样:
[2016/06/10 13:25:28]
Run Code Online (Sandbox Code Playgroud)