linux内核printk调试
linux内核printk调试(摘录《Linux安全体系分析与编程》)
linux内核printk调试(摘录《Linux安全体系分析与编程》)
1 printk及控制台的日志级别
函数printk的使用方法和printf相似,用于内核打印消息。printk根据日志级别(loglevel)对消息进行分类。
日志级别用宏定义,日志级别宏展开为一个字符串,在编译时由预处理器将它和消息文本拼接成一个字符串,因此printk 函数中日志级别宏和格式字符串间不能有逗号。
下面是两个printk的例子,一个用于打印调试信息,另一个用于打印临界条件信息。
printk(KERN_DEBUG "Here I am: %s:%i\n", _ _FILE_ _, _ _LINE_ _);
printk(KERN_CRIT "I'm trashed; giving up on %p\n", ptr);
printk的日志级别定义如下(在linux26/includelinux/kernel.h中):
#defineKERN_EMERG"<0>"/*紧急事件消息,系统崩溃之前提示,表示系统不可用*/
#defineKERN_ALERT"<1>"/*报告消息,表示必须立即采取措施*/
#defineKERN_CRIT"<2>"/*临界条件,通常涉及严重的硬件或软件操作失败*/
#defineKERN_ERR"<3>"/*错误条件,驱动程序常用KERN_ERR来报告硬件的错误*/
#defineKERN_WARNING"<4>"/*警告条件,对可能出现问题的情况进行警告*/
#defineKERN_NOTICE"<5>"/*正常但又重要的条件,用于提醒。常用于与安全相关的消息*/
#defineKERN_INFO"<6>"/*提示信息,如驱动程序启动时,打印硬件信息*/
#defineKERN_DEBUG"<7>"/*调试级别的消息*/
extern int console_printk[];
#define console_loglevel (console_printk[0])
#define default_message_loglevel (console_printk[1])
#define minimum_console_loglevel (console_printk[2])
#define default_console_loglevel (console_printk[3])
日志级别的范围是0~7,没有指定日志级别的printk语句默认采用的级别是 DEFAULT_ MESSAGE_LOGLEVEL,其定义列出如下(在linux26/kernel/printk.c中):
/*没有定义日志级别的printk使用下面的默认级别*/
#define DEFAULT_MESSAGE_LOGLEVEL 4 /* KERN_WARNING 警告条件*/
内核可把消息打印到当前控制台上,可以指定控制台为字符模式的终端或打印机等。默认情况下,“控制台”就是当前的虚拟终端。
为了更好地控制不同级别的信息显示在控制台上,内核设置了控制台的日志级别console_loglevel。printk日志级别的作用
相关文档:
Linux Grep命令使用的详细介绍
1. grep简介
grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行
打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。Unix的
grep家族包括grep、 egrep和fgrep。egrep和fgrep的命令只跟grep有很小不 ......
一、svn客户端安装及环境配置.
果所在的linux机器上没有安装svn客户端,则首先安装svn客户端:
1. subversion-1.4.3.tar.bz2 subversion-deps-1.4.3.tar.bz2
2. 使用
tar xvfj subversion-1.4.3.tar.bz2
t ......
用户系统相关命令
用户切换
用户切换: su [选项] [使用者]
用户管理
增加用户账号: useradd [选项] 用户名
设置用户账号属性: usermod [选项] 属性值
删除对应用户账号: userdel [选项] 用户名
增加组账号: ......
linux修改ssh端口22
vi /etc/ssh/ssh_config
vi /etc/ssh/sshd_config
然后修改为port 8888
以root身份service sshd restart (redhat as3)
使用putty,端口8888
Linux下SSH默认的端口是22,为了安全考虑,现修改SSH的端口为1433,修改方法如下 :
/usr/sbin/sshd -p 1433
为增强安全
先增加一个普通权限的用户: ......
1.fork
创建一个新进程
2.clone
按指定条件创建子进程
3.execve
运行可执行文件
4.exit   ......