linux 内核打印,linux压缩软件

大家好,今天小编来为大家解答linux 内核打印这个问题,linux压缩软件很多人还不知道,现在让我们一起来看看吧!

Linux kernel log-1-printk和demsg

printk是Linux内核中用于日志输出的函数,其主要功能包括记录信息到日志中和调用控制台驱动将信息输出。printk的实现定义在linux/printk.h文件中。

printk在使用时需要设置日志级别,用于控制输出信息是否在终端上显示。如果设置的日志级别高于控制台级别,则信息才会在控制台上显示。内核日志共有8种级别,包括emergency、alert、critical、error、warning、notice、info和debug。

控制台级别的设置可通过命令cat/proc/sys/kernel/printk查看,其中的4 4 1 7分别对应console_loglevel、default_message_loglevel、minimum_console_loglevel、default_console_loglevel。默认消息日志级别为4,即KERN_WARNING。因此,printk("hello world")等同于printk(KERN_WARNING"hello world")。如果将控制台级别设成/proc/sys/kernel/printk,则printk("hello world")将无法输出到控制台。

修改控制台级别的方法除了通过修改命令行参数外,还可以通过修改bootargs来设定。例如在Uboot中修改“console=ttyS0,115200”为“loglevel=7 console=ttyS0,115200”,表示设置内核的console_loglevel值为7。

printk支持带时间戳的日志输出,可以通过make menuconfig开启此功能。

printk的相关函数在linux/prink.h文件中实现,包括pr_emerg到pr_info等基本的内核打印函数,以及pr_debug,它有三种输出方式,当开启dynamic_debug后,则走dynamic_pr_debug流程,当用户开启了DEBUG宏,则走printk流程,否则什么都不打印。

dmesg命令是从kernel ring buffer中读取内核日志信息,开机信息也保存在/var/log目录中名为dmesg的文件里。dmesg命令可以用来查看内核日志。通过dmesg-n也可以设置控制台打印级别。在调试内核驱动时,如果内核出现panic或死锁,导致无法敲命令查看日志,可以使用后台进程将日志导入到文件中。

如何修改内核打印级别

手动调整内核printk打印级别

有时调试内核模块,打印信息太多了,可以通过修改/proc/sys/kernel/printk文件内容来控制。默认设置是6 4 1 7

# cat/proc/sys/kernel/printk

7 4 1 7

#

该文件有四个数字值,它们根据日志记录消息的重要性,定义将其发送到何处。关于不同日志级别的更多信息,请查阅syslog(2)联机帮助。上面显示的4个数据分别对应:

控制台日志级别:优先级[s1]高于该值的消息将被打印至控制台

默认的消息日志级别:将用该优先级来打印没有优先级的消息

最低的控制台日志级别:控制台日志级别可被设置的最小值(最高优先级)

默认的控制台日志级别:控制台日志级别的缺省值

[s1]数值越小,优先级越高

其实这四个值是在kernel/printk.c中被定义的,如下:

int console_printk[4]={

DEFAULT_CONSOLE_LOGLEVEL,/* console_loglevel*/

DEFAULT_MESSAGE_LOGLEVEL,/* default_message_loglevel*/

MINIMUM_CONSOLE_LOGLEVEL,/* minimum_console_loglevel*/

DEFAULT_CONSOLE_LOGLEVEL,/* default_console_loglevel*/

};

内核通过printk()输出的信息具有日志级别,日志级别是通过在printk()输出的字符串前加一个带尖括号的整数来控制的,如printk("<6>Hello, world!\n");。内核中共提供了八种不同的日志级别,在 linux/kernel.h中有相应的宏对应。

#define KERN_EMERG"<0>"/* systemis unusable*/

#define KERN_ALERT"<1>"/* actionmust be taken immediately*/

#define KERN_CRIT"<2>"/*critical conditions*/

#define KERN_ERR"<3>"/* errorconditions*/

#define KERN_WARNING"<4>"/* warning conditions*/

#define KERN_NOTICE"<5>"/* normalbut significant*/

#define KERN_INFO"<6>"/*informational*/

#define KERN_DEBUG"<7>"/*debug-level messages*/

所以printk()可以这样用:printk(KERN_INFO"Hello, world!\n");。

未指定日志级别的printk()采用的默认级别是DEFAULT_MESSAGE_LOGLEVEL,这个宏在kernel/printk.c中被定义为整数4,即对应KERN_WARNING。

/* printk's without a loglevel use this..*/

#define DEFAULT_MESSAGE_LOGLEVEL 4/* KERN_WARNING*/

了解了上面的这些知识后,我们就应该知道如何手动控制printk打印了。例如,我想屏蔽掉所有的内核printk打印,那么我只需要把第一个数值调到最小值1或者0。

# echo 1 4 1 7>/proc/sys/kernel/printk

或者

# echo 0 4 0 7>/proc/sys/kernel/printk

另外,/proc/sys/kernel/printk_ratelimit和/proc/sys/kernel/printk_ratelimit_burst也可以用来控制打印,具体有待研究。

linux内核打印linux内核打印

linuxconsole是什么文件

linuxconsole是一个为内核提供打印的缓冲文件。

linux系统下的打印机无法打印怎么解决?

点击屏幕左下角的“开始”按钮,从弹出的菜单列表中选择“打印机和传真”;

在打开的“打印机和传真”窗口中单击左侧的“添加打印机”命令;

接着会弹出“添加打印机向导”对话框,单击“下一步”按钮继续;

一般我们是选择第一项,使用网络打印机也更多的选.

Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。

它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

Linux操作系统诞生于1991年10月5日(这是第一次正式向外公布时间)。Linux存在着许多不同的Linux版本,但它们都使用了Linux内核。

Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。

严格来讲,Linux这个词本身只表示Linux内核,但实际上人们已经习惯了用Linux来形容整个基于Linux内核,并且使用GNU工程各种工具和数据库的操作系统。

在Linux下查自己的IP怎么查?

可以使用ifconfig命令查看IP。

ifconfig命令用于配置和显示Linux内核中网络接口的网络参数。

输入ifconfig,会打印出网络接口的参数,除了IP地址还会打印出物理地址、掩码地址等网络接口相关参数.

linuxdmesg命令详解?

linuxdmesg命令参数及用法详解(linux显示开机信息命令)

功能说明:显示开机信息。

语法:dmesg

补充说明:kernel会将开机信息存储在ringbuffer中。您若是开机时来不及查看信息,可利用dmesg来查看。开机信息亦保存在/var/log目录中,名称为dmesg的文件里。

参数:

-c显示信息后,清除ringbuffer中的内容。

-s缓冲区大小>预设置为8196,刚好等于ringbuffer的大小。

-n设置记录信息的层级。扩展阅读一:dmesg命令主要用途

主要应用:

dmesg用来显示内核环缓冲区(kernel-ringbuffer)内容,内核将各种消息存放在这里。在系统引导时,内核将与硬件和模块初始化相关的信息填到这个缓冲区中。内核环缓冲区中的消息对于诊断系统问题通常非常有用。在运行dmesg时,它显示大量信息。通常通过less或grep使用管道查看dmesg的输出,这样可以更容易找到待查信息。例如,如果发现硬盘性能低下,可以使用dmesg来检查它们是否运行在DMA模式:

$dmesg|grepDMA

...

ide0:BM-DMAat0xf000-0xf007,BIOSsettings:hda:DMA,hdb:DMA

ide1:BM-DMAat0xf008-0xf00f,BIOSsettings:hdc:DMA,hdd:DMA

...上面几行可以说明每个IDE设备正在什么模式下运行。如果以太网连接出现问题,那么可以在dmesg日志中搜索eth:

$dmesg|grepeth

forcedeth.c:ReverseEngineerednForce

ethernetdriver.Version0.49.

eth0:forcedeth.c:subsystem:0147b:1c00

boundto0000:00:04.0

eth0:noIPv6routerspresent如果一切正常,那么dmesg显示每个网卡的硬件配置信息。如果某项系统服务未能得到正确的配置,dmesg日志很快就填满错误消息,这是诊断故障的良好起点。

还可以用来探测系统内核模块的加载情况,比如要检测ACPI的加载情况,使用dmesg|grepacpi

dmesg|egrep-i''(apm|acpi)''

Kernelcommandline:vga=274quietconsole=ttyS3,9600acpi=no-idleoot=/dev/hda3

ACPI:CoreSubsystemversion

ACPI:Subsystemenabled

ACPI:Systemfirmwaresupports:C2

ACPI:plvl2lat=99plvl3lat=1001

ACPI:C2enter=1417C2exit=354

ACPI:C3enter=-1C3exit=-1

ACPI:NotusingACPIidle

ACPI:Systemfirmwaresupports:S0S1S4S5

扩展阅读二:dmesg命令使用示例

使用示例

示例一将开机信息发邮件

mandmesg写道

Theprogramhelpsuserstoprintouttheirbootupmessages.Insteadofcopyingthemessagesbyhand,theuserneedonly:

dmesg>boot.messages

andmailtheboot.messagesfiletowhoevercandebugtheirproblem.

#dmesg>boot.messages

#ls-lboot.messages

-rw-r--r--1rootroot1583812-0912begin_of_the_skype_highlighting

1583812-0912免费end_of_the_skype_highlighting:55boot.messages#mail-s"BootLogofLinuxServer"public@web3q.netboot.messages

#示例二浏览dmesg输出的信息

#uname-a

Linuxnew552.6.18-194.el5#1SMPTueMar1621:52:43EDT2010i686i686i386GNU/Linux#dmesg|less

Linuxversion2.6.18-194.el5(mockbuild@x86-007.build.bos.redhat.com)(gccversion4.1.220080704(RedHat4.1.2-48))#1SMPTueMar1621:52:43EDT2010

BIOS-providedphysicalRAMmap:

BIOS-e820:0000000000010000-000000000009fc00(usable)

BIOS-e820:000000000009fc00-00000000000a0000(reserved)

BIOS-e820:00000000000e0000-0000000000100000(reserved)

BIOS-e820:0000000000100000-000000001f7d0000(usable)

BIOS-e820:000000001f7d0000-000000001f7efc00(reserved)

BIOS-e820:000000001f7efc00-000000001f7fb000(ACPINVS)

BIOS-e820:000000001f7fb000-000000001f800000(reserved)

BIOS-e820:00000000e0000000-00000000f0000000(reserved)

BIOS-e820:00000000fec00000-00000000fec02000(reserved)

BIOS-e820:00000000fed20000-00000000fed9b000(reserved)

BIOS-e820:00000000feda0000-00000000fedc0000(reserved)

BIOS-e820:00000000ffb00000-00000000ffc00000(reserved)

BIOS-e820:00000000fff00000-0000000100000000(reserved)

0MBHIGHMEMavailable.

503MBLOWMEMavailable.

Memoryforcrashkernel(0x0to0x0)notwithinpermissiblerange

disablingkdump

Usingx86segmentlimitstoapproximateNXprotection

Onnode0totalpages:128976

DMAzone:4096pages,LIFObatch:0

Normalzone:124880pages,LIFObatch:31

DMI2.3present.

UsingAPICdriverdefault

ACPI:RSDP(v000HP)@0x000fe270

ACPI:RSDT(v001HP30C40x31100620HP0x00000001)@0x1f7efc84

ACPI:FADT(v002HP30C40x00000002HP0x00000001)@0x1f7efc00

ACPI:MADT(v001HP30C40x00000001HP0x00000001)@0x1f7efcb8

ACPI:MCFG(v001HP30C40x00000001HP0x00000001)@0x1f7efd14

ACPI:SSDT(v001HPHPQPpc0x00001001MSFT0x0100000e)@0x1f7f6698

ACPI:DSDT(v001HPDAU000x00010000MSFT0x0100000e)@0x00000000

ACPI:PM-TimerIOPort:0x1008

ACPI:LocalAPICaddress0xfec01000

ACPI:LAPIC(acpi_idlapic_idenabled)

Processor#06:13APICversion20

ACPI:LAPIC_NMI(acpi_idhighedgelint)

ACPI:IOAPIC(idaddressgsi_base)

IOAPIC:apic_id1,version32,address0xfec00000,GSI0-23

:

示例三查看dmesg尾部的信息

#dmesg|tail

Bluetooth:L2CAPver2.8

Bluetooth:L2CAPsocketlayerinitialized

Bluetooth:RFCOMMsocketlayerinitialized

Bluetooth:RFCOMMTTYlayerinitialized

Bluetooth:RFCOMMver1.8

Bluetooth:HIDP(HumanInterfaceEmulation)ver1.1

eth0:noIPv6routerspresent

Installingknfsd(copyright(C)1996okir@monad.swb.de).

NFSD:Using/var/lib/nfs/v4recoveryastheNFSv4staterecoverydirectory

NFSD:starting90-secondgraceperiod

#

示例四安装SS7卡驱动时的内核日志

#cdSS7HD_DRIVER/

#ls

bbdddlnx_iss.hbbd_hbi.hbbd_ioc.cbbd_isr.cbbd_pci.cBSD_license.txtGPL_V2-only_license.txtinstall_ss7hd.shMakefile26

bbd_def.hbbd_hs.cbbd_ioc.hbbd_lnx.cbbd_pro.hbuild_ss7hd.shi21555.hMakefile24

#./build_ss7hd.sh

make:Enteringdirectory`/usr/src/kernels/2.6.9-22.EL-i686'

CC/root/setup/ss7dpklnx/SS7HD_DRIVER/bbd_hs.o

CC/root/setup/ss7dpklnx/SS7HD_DRIVER/bbd_ioc.o

CC/root/setup/ss7dpklnx/SS7HD_DRIVER/bbd_isr.o

CC/root/setup/ss7dpklnx/SS7HD_DRIVER/bbd_pci.o

CC/root/setup/ss7dpklnx/SS7HD_DRIVER/bbd_lnx.o

LD/root/setup/ss7dpklnx/SS7HD_DRIVER/ss7hddvr26.o

Buildingmodules,stage2.

MODPOST

CC/root/setup/ss7dpklnx/SS7HD_DRIVER/ss7hddvr26.mod.o

LD/root/setup/ss7dpklnx/SS7HD_DRIVER/ss7hddvr26.ko

make:Leavingdirectory`/usr/src/kernels/2.6.9-22.EL-i686'

#lsmod|grepss7

ss7hddvr26258080

#dmesg|tail

ACPI:PCIinterrupt0000:02:0d.0->GSI9(level,low)->IRQ9

BBD64bit

SS7HD-suspend

DialogicSS7HDDeviceDriverV100.00(SourceV1.21)

Copyright(C)DialogicCorporation2003-2010.AllRightsReserved

Usingmajordevicenumber251.

ACPI:PCIinterrupt0000:02:0d.0->GSI9(level,low)->IRQ9

BBD64bit

#./install_ss7hd.shremove

#lsmod|grepss7

#dmesg|tail

BBD64bit

SS7HD-suspend

DialogicSS7HDDeviceDriverV100.00(SourceV1.21)

Copyright(C)DialogicCorporation2003-2010.AllRightsReserved

Usingmajordevicenumber251.

ACPI:PCIinterrupt0000:02:0d.0->GSI9(level,low)->IRQ9

BBD64bit

SS7HD-suspend

#

示例五打印并清除内核环形缓冲区

#dmesg-c

Linuxversion2.6.18-194.el5(mockbuild@x86-007.build.bos.redhat.com)(gccversion4.1.220080704(RedHat4.1.2-48))#1SMPTueMar1621:52:43EDT2010

BIOS-providedphysicalRAMmap:

BIOS-e820:0000000000010000-000000000009fc00(usable)

BIOS-e820:000000000009fc00-00000000000a0000(reserved)

BIOS-e820:00000000000e0000-0000000000100000(reserved)

BIOS-e820:0000000000100000-000000001f7d0000(usable)

BIOS-e820:000000001f7d0000-000000001f7efc00(reserved)

BIOS-e820:000000001f7efc00-000000001f7fb000(ACPINVS)

BIOS-e820:000000001f7fb000-000000001f800000(reserved)

BIOS-e820:00000000e0000000-00000000f0000000(reserved)

BIOS-e820:00000000fec00000-00000000fec02000(reserved)

BIOS-e820:00000000fed20000-00000000fed9b000(reserved)

BIOS-e820:00000000feda0000-00000000fedc0000(reserved)

BIOS-e820:00000000ffb00000-00000000ffc00000(reserved)

BIOS-e820:00000000fff00000-0000000100000000(reserved)

0MBHIGHMEMavailable.

503MBLOWMEMavailable.

Memoryforcrashkernel(0x0to0x0)notwithinpermissiblerange

disablingkdump

Usingx86segmentlimitstoapproximateNXprotection

Onnode0totalpages:128976

DMAzone:4096pages,LIFObatch:0

Normalzone:124880pages,LIFObatch:31

DMI2.3present.省略输出

Bluetooth:HIDP(HumanInterfaceEmulation)ver1.1

eth0:noIPv6routerspresent

Installingknfsd(copyright(C)1996okir@monad.swb.de).

NFSD:Using/var/lib/nfs/v4recoveryastheNFSv4staterecoverydirectory

NFSD:starting90-secondgraceperiod

#dmesg#less/var/log/dmesg

Linuxversion2.6.18-194.el5(mockbuild@x86-007.build.bos.redhat.com)(gccversion4.1.220080704(RedHat4.1.2-48))#1SMPTueMar1621:52:43EDT2010

BIOS-providedphysicalRAMmap:

BIOS-e820:0000000000010000-000000000009fc00(usable)

BIOS-e820:000000000009fc00-00000000000a0000(reserved)

BIOS-e820:00000000000e0000-0000000000100000(reserved)

BIOS-e820:0000000000100000-000000001f7d0000(usable)

BIOS-e820:000000001f7d0000-000000001f7efc00(reserved)

BIOS-e820:000000001f7efc00-000000001f7fb000(ACPINVS)

BIOS-e820:000000001f7fb000-000000001f800000(reserved)

BIOS-e820:00000000e0000000-00000000f0000000(reserved)

BIOS-e820:00000000fec00000-00000000fec02000(reserved)

BIOS-e820:00000000fed20000-00000000fed9b000(reserved)

BIOS-e820:00000000feda0000-00000000fedc0000(reserved)

BIOS-e820:00000000ffb00000-00000000ffc00000(reserved)

BIOS-e820:00000000fff00000-0000000100000000(reserved)

0MBHIGHMEMavailable.

503MBLOWMEMavailable.

Memoryforcrashkernel(0x0to0x0)notwithinpermissiblerange

disablingkdump

Usingx86segmentlimitstoapproximateNXprotection

Onnode0totalpages:128976

DMAzone:4096pages,LIFObatch:0

Normalzo

阅读剩余
THE END