热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

linux系统调用printk打印的信息有时显示,有时不显示,内核printk有时能打印有时不能打印的问题...

一条没有指定优先级的printk语句缺省是DEFAULT_MESSAGE_LOGLEVEL,在kernelprintk.c里指定作为一个整数.在2.6.10内核中,DEFAULT_

一条没有指定优先级的 printk 语句缺省是 DEFAULT_MESSAGE_LOGLEVEL, 在 kernel/printk.c 里指定作为一个整数. 在 2.6.10 内核中, DEFAULT_MESSAGE_LOGLEVEL 是 KERN_WARNING, 但是在过去已知是改变的.

基于记录级别, 内核可能打印消息到当前控制台, 可能是一个文本模式终端, 串口, 或者是一台并口打印机. 如果优先级小于整型值 console_loglevel, 消息被递交给控制台, 一次一行( 除非提供一个新行结尾, 否则什么都不发送 ). 如果 klogd 和 syslogd 都在系统中运行, 内核消息被追加到 /var/log/messages (或者另外根据你的 syslogd 配置处理), 独立于 console_loglevel. 如果 klogd 没有运行, 你只有读 /proc/kmsg ( 用 dmsg 命令最易做到 )将消息取到用户空间. 当使用 klogd 时, 你应当记住, 它不会保存连续的同样的行; 它只保留第一个这样的行, 随后是, 它收到的重复行数.

变量 console_loglevel 初始化成 DEFAULT_CONSOLE_LOGLEVEL, 并且可通过 sys_syslog 系统调用修改. 一种修改它的方法是在调用 klogd 时指定 -c 开关, 在 klogd 的 manpage 里有指定. 注意要改变当前值, 你必须先杀掉 klogd, 接着使用 -c 选项重启它. 另外, 你可写一个程序来改变控制台记录级别. 你会发现这样一个程序的版本在由 O' Reilly 提供的 FTP 站点上的 miscprogs/setlevel.c. 新的级别指定未一个整数, 在 1 和 8 之前, 包含 1 和 8. 如果它设为 1, 只有 0 级消息( KERN_EMERG )到达控制台; 如果它设为 8, 所有消息, 包括调试消息, 都显示.

简单的说,printk有一个等级,控制台也有一个等级,只有你的printk的等级小于控制台的等级才能在控制台输出,

其次:

但是我是使用的普通的printk函数,没有加任何等级,按照定义的话我应该使用默认等级,是4,而控制台等级一般不会去动它,它的等级是7,照理应该能输出的啊?进入/proc目录,cat了一下kmsg发现我的信息时存在的(并不是之前我换衣的会不会串口驱动写的不好),但是他上面的等级赫然显示的是7,why????

原因:

在我这句printk之前有一句printk(KERN_DEBUG "Calibrating delay loop... ");而且它没有加换行符,导致后面的printk也默认等级和它相同,也是KERN_DEBUG等级(7),所以当然不能显示啦。

结论:

以后再有这种情况,可是先在不能print的printk语句前加一句printk,记住使用默认等级,再加换行符!

启示:

软件的任何现象都是可以解释的,切忌!

ps: 可以通过文本文件/proc/sys/kernel/printk的访问来读取和修改控制台的日志级别。

echo 8 > /proc/sys/kernel/printk



推荐阅读
  • 本文介绍了深入浅出Linux设备驱动编程的重要性,以及两种加载和删除Linux内核模块的方法。通过一个内核模块的例子,展示了模块的编译和加载过程,并讨论了模块对内核大小的控制。深入理解Linux设备驱动编程对于开发者来说非常重要。 ... [详细]
  • 我是这样学习Linux下C语言编程的-把程序输出信息加到系统日志里去关键词:Linux系统日志syslog服务程序syslogd ... [详细]
  • 原文地址:https:blog.csdn.netu011784994articledetails73878822这里是通过对udev的设置,让udev收到内核发来的U盘消息后自动挂 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • 服务器上的操作系统有哪些,如何选择适合的操作系统?
    本文介绍了服务器上常见的操作系统,包括系统盘镜像、数据盘镜像和整机镜像的数量。同时,还介绍了共享镜像的限制和使用方法。此外,还提供了关于华为云服务的帮助中心,其中包括产品简介、价格说明、购买指南、用户指南、API参考、最佳实践、常见问题和视频帮助等技术文档。对于裸金属服务器的远程登录,本文介绍了使用密钥对登录的方法,并提供了部分操作系统配置示例。最后,还提到了SUSE云耀云服务器的特点和快速搭建方法。 ... [详细]
  • 使用eclipse创建一个Java项目的步骤
    本文介绍了使用eclipse创建一个Java项目的步骤,包括启动eclipse、选择New Project命令、在对话框中输入项目名称等。同时还介绍了Java Settings对话框中的一些选项,以及如何修改Java程序的输出目录。 ... [详细]
  • 网络安全是一个非常重要的课题,基本上你运行的服务后台越多,你就可能打开更多的安全漏洞.如果配置的恰当的话,Linux本身是非常安全可靠的,假使在Linux系统中有某个安全缺陷,由于Linu ... [详细]
  • Azkaban(三)Azkaban的使用
    界面介绍首页有四个菜单projects:最重要的部分,创建一个工程,所有flows将在工程中运行。scheduling:显示定时任务executing:显示当前运行的任务histo ... [详细]
  • http:friendlysong.blog.163.comblogstatic3225243920119142325417命令行如下find.-typef-size1000000 ... [详细]
  • Linux目录结构说明(2)一些重要文件目录1.一些重要文件目录参考1.一些重要文件目录1.网卡配置文件etcsysconfignetwork-scr ... [详细]
  • 在做以下实验时需先做的操作为:(1)打开两个虚拟机(desktop和server)并更改他们的ipÿ ... [详细]
  • 与用户空间应用不同的是,内核不能调用标准C库或其它任何不属于内核的库。主要原因是,速度及大小的限制。标准C库对内核而言实在是太大了。许多常用的的libc ... [详细]
  • 开发笔记:Python脚本优化Zabbix多行日志监控
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了Python脚本优化-----Zabbix多行日志监控相关的知识,希望对你有一定的参考价值。通过使用z ... [详细]
author-avatar
独孤求独孤_715
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有