作用 通过读写/proc/sys/kernel/printk文件可读取和修改控制台的日志级别。如插入键鼠时弹出设备的输入输出msg信息等。...日志等级文件 在系统下通过读写/proc/sys/kernel/printk文件,来读取控制台的日志信息: [root@localhost ~]# cat /proc/sys/kernel/printk.../sys/kernel/printk 4 4 1 7 [root@localhost ~]# echo 8 > /proc/sys/kernel/printk [root...@localhost ~]# cat /proc/sys/kernel/printk 8 4 1 7 [root@localhost ~]# echo 8 1 1 1...> /proc/sys/kernel/printk [root@localhost ~]# cat /proc/sys/kernel/printk 8 1 1 1
在Linux的文档中,linux-4.4/Documentation/sysrq.txt有比较具体的描述,在这里截取几个关键的地方: echo "number" >/proc/sys/kernel/sysrq...6,printk 上述的步骤配置完成后,可以看到大量的kernel的log,但是依然不能看到sysrq的log。因为log level的关系。...在GuestOS中,敲cat /proc/sys/kernel/printk可以看到printk的log level。默认情况下,应该可以看到“4 4 1 7”这样的显示。...printk的log level在linux-4.4/kernel/printk/printk.c中实现, 我们只要关注第一个就行了,在shell中敲echo “8 4 1 7” > /proc/sys.../kernel/printk来调整一下。
/sys/kernel/sysrq,用来打开/关闭sysrq功能。...6,printk 上述的步骤配置完成后,可以看到大量的kernel的log,但是依然不能看到sysrq的log。因为log level的关系。...在GuestOS中,敲cat /proc/sys/kernel/printk可以看到printk的log level。默认情况下,应该可以看到“4 4 1 7”这样的显示。...printk的log level在linux-4.4/kernel/printk/printk.c中实现, [1501760839128_5044_1501760840714.png] 我们只要关注第一个就行了...,在shell中敲echo “8 4 1 7” > /proc/sys/kernel/printk来调整一下。
代码分析: 代码路径:https://github.com/pacepi/whotouchmyfile #include kernel.h> #include proc/sys/kernel目录下 }; static struct ctl_table table[] = { { .procname = "who_touch_my_file...用法就是echo "file_name" > /proc/sys/kernel/who_touch_my_file .data = file_name, .maxlen...= FILE_NAME, .mode = 0644, .proc_handler = proc_dostring, }, {...(&path, &table);///proc/sys/kernel/who_touch_my_file在这里注册的 if (cth == NULL) { printk(KERN_INFO
防篡改技术基于Linux Kernel技术进行的模块开发,相比fanotify、audit、云防护,性能损耗极低(毫秒级),效果最优。...基于Linux Kernel 3.10、4.18,通过register_kprobe方法注册kallsyms_lookup_name探针,检测系统环境是否可以获取sys_call_table,如果可以,...创建函数在多个阶段性版本都会有改变(截止到5.22版本,proc又有新的改变) netlink同理 4.17后且64位的机器,在调用sys_系列函数时,不再直接传递,而是使用结构体pregs的寄存器来获取内存中的参数...("sys_call_table"); printk("%s %s. kprobe sys_call_table:%p\n", LKM_INFO, __FUNCTION__, sys_call_table_ptr...; enable_write_protection(); printk("hook sys_open success!
CPU性能调优方法: 编辑/proc/sys/kernel/中的文件,修改内核参数。 ...#cd /proc/sys/kernel/ # ls /proc/sys/kernel/ acct hotplug panic real-root-dev cad_pid modprobe ...修改/proc/sys/vm/下的系统参数。 ... # cat /proc/sys/net/core/rmem_max 131071 # cat /proc/sys/net/core/wmem_default 135168 # cat... /proc/sys/net/core/wmem_max 131071 # cat /proc/sys/net/core/optmem_max 20480 # cat /proc/sys
mount -t debugfs none /sys/kernel/debug/ cat /sys/kernel/debug/rpm_stats 获取系统是否休眠。...echo 1 >/sys/module/msm_show_resume_irq/parameters/debug_mask echo "8 8 8 8">/proc/sys/kernel/printk...cat /sys/kernel/debug/rpm_stats 获取系统是否休眠。...验证XO关闭和VDD最小化 echo 1 >/sys/module/msm_show_resume_irq/parameters/debug_mask 查看log获取异常唤醒源 echo "8 8 8...8">/proc/sys/kernel/printk adb shell cat/sys/kernel/debug/wakeup_sources > j:\777.txt 查看唤醒锁,哪个锁造成无法休眠
/bin/sh mount -t proc none /proc mount -t sys none /sys /bin/mount -n -t sysfs none /sys /bin/mount -...printk("You write something."); return len; } static int __init hello_init(void) { printk...\n"); create_proc_entry("hello", 0666, 0)->write_proc = hello_write; return 0; } static void...__exit hello_exit(void) { printk(KERN_ALERT "hello driver exit\n"); } module_init(hello_init); module_exit...> #include sys/mman.h> int main() { int fd = open("/proc/hello", O_WRONLY); write(fd, "I0gan
3.解决办法 环境配置 menuconfig选上CONFIG_DEBUG_FS、CONFIG_DYNAMIC_DEBUG 小机端 1. echo 8 > /proc/sys/kernel/printk...调整printk打印等级为7以上 2. cat /sys/kernel/debug/dynamic_debug/control | grep bluetooth 查看目前能控制的打印 3. echo...-p' > /sys/kernel/debug/dynamic_debug/control 指将hci_core.c文件的打印关闭 5. echo "file net/bluetooth/rfcomm.../core.c line 1603 +p" > /sys/kernel/debug/dynamic_debug/control 指将文件net/bluetooth/rfcomm/core.c的第1603...行的打印打开 6. echo 'module $mod_name +p' > /sys/kernel/debug/dynaminc_debug/control 指将某个模块的打印打开。
使用方法 1, 使能休眠唤醒日志 使控制台不休眠,必须 echo N > /sys/module/printk/parameters/console_suspend 使能 kernel 休眠打印 可选...echo 1 > /sys/module/kernel/parameters/initcall_debug 使能 设备休眠唤醒调用顺序 可选 echo 1 > /sys/power/pm_print_times...调整控制台打印级别 可选 echo 8 > /proc/sys/kernel/printk 也可以执行 echo Y > /sys/module/printk/parameters/ignore_loglevel...2, 根据需要,关闭异步休眠唤醒 默认是并行休眠,可能出现多个核同时休眠设备,打印日志比较乱的情况 echo 0 > /sys/power/pm_async # 关闭异步 3, 设置休眠过程需要执行的动作.../sys/class/sunxi_dump/standby_dump_ctrl 是为了方便在 standby 等流程中读写寄存器的值,增加的接口。
sched_init_smp(); do_basic_setup(); /* Open the /dev/console on the rootfs, this should never fail */ if (sys_open...\n”); (void) sys_dup(0); (void) sys_dup(0); /* * check if there is an early userspace init....ramdisk_execute_command) ramdisk_execute_command = “/init”; if (sys_access((const char __user *) ramdisk_execute_command...do_basic_setup(void) { cpuset_init_smp(); usermodehelper_init(); init_tmpfs(); driver_init(); init_irq_proc...Give up */ printk(KERN_ERR “%s: driver_add_attrs(%s) failed\n”, __func__, drv->name); } if (!
2.我们以“console=ttySA0,115200”为例,进入linux-2.6.22.6\kernel\printk.c 找到以下一段: __setup("console=", console_setup...搜索到在linux-2.6.22.6\kernel\Printk.c里的register_console(struct console *console)函数,有用到console_cmdline[]...有以下3种方法 9.1通过修改 /proc/sys/kernel/printk 来更改printk打印级别 如下图所示,可以看到default_message_loglevel默认值小于console_loglevel...然后通过# echo "1 4 1 7" > /proc/sys/kernel/printk来将console_loglevel设为1,即可屏蔽打印 缺点就是内核重启后, /proc/sys/kernel.../printk的内容又会恢复初值,等于"7 4 1 7",可以参考方法2和3来弥补该缺点 9.2直接修改内核文件 直接修改_call_console_drivers ()函数(位于kernel\printk.c
/proc 目录下的 fd 在 hello 在运行状态时,通过查看 /proc/pid/fd 可以获取到文件当前打开的文件句柄: $ ls -hl /proc/`pidof hello`/fd total...b.trace_print() 则是读取 bpf_trace_printk 的输出,并打印; 支持 PID 过滤版本 为了方便统计特定进程的文件打开情况,我们还需要增强为支持按照 PID 过滤的功能。.../hello.c] 后续程序增强 目前只是使用 bpf_trace_printk 进行了打印,生产中的跟踪程序应采用 BPF_PERF_OUTPUT 的方式。...内核文档: https://www.kernel.org/doc/html/latest/filesystems/proc.html [16] part 1: https://lwn.net/Articles...probes: https://blog.yadutaf.fr/2016/03/30/turn-any-syscall-into-event-introducing-ebpf-kernel-probes
LKM(可加载内核模块) LKM的全称为Loadable Kernel Modules,中文名为可加载内核模块,主要作用是用来扩展linux的内核功能。...lsmod命令是通过/proc/modules来获取当前系统模块信息的。...3.从sysfs中隐藏我们的模块 当然我们还不能高兴的太早,除了lsmod命令和相对应的查看/proc/modules以外,我们还可以在sysfs中,也就是通过查看/sys/module/目录来发现现有的模块...通常,sysfs是挂在在/sys目录下的,而/sys/module是一个sysfs的一个目录层次, 包含当前加载模块的信息....关于proc和sysfs文件系统,可以参考《深入linux内核架构》中的第十章"无持久存储的文件系统"。
如果是个人维护的kernel,那么就需要保存对应的symbol。 作者写了下面的脚本来监控qemu进程调用sys_clone的返回值。...\n") } probe kernel.function("sys_clone") { if (execname() == "qemu-system-x86") { printf...("sys_clone : %s\n", execname()) } } probe kernel.function("sys_clone").return { if (execname...if ($return < 0) printf("[error]sys_clone_return : %s, %d\n", execname(), $return) }...5、pids cat /proc/PID/cgroup来查看qemu使用的cgroup。
本文主要介绍瑞芯微RK3562J的实时性测试,开发环境如下:U-Boot:U-Boot-2017.09Kernel:Linux-RT-5.10.198LinuxSDK:LinuxSDK-[版本号](基于...Target#cat /proc/cmdline进入评估板文件系统,执行如下命令,修改内核printk日志等级,避免内核打印信息影响实时测试。...Target#echo 1 > /proc/sys/kernel/printk调整内存分配策略为“2”,禁用内存过度使用。...Target#echo 2 > /proc/sys/vm/overcommit_memory执行如下命令,运行stress压力测试工具,使得CPU处于满负荷状态。
补充 kernel 3.9 kernel 3.10 1. 问题来源 2. 概述 3. 示例 4. 补充 kernel 3.9 kernel 3.10 1....("mydev",0666,NULL,&myops); printk(KERN_ALERT "hello......\n"); return 0; } static void simple_cleanup(void) { proc_remove(ent); printk(KERN_WARNING...$ user_app.c #include #include sys/types.h> #include sys/stat.h> #include #include...补充 proc_create是在kernel 3.10以及之后的版本中新增的,用于替换之前的create_proc_entry kernel 3.9 include/linux/proc_fs.h extern
线程库的例子有Linuxthreads和Next Generation Posix Threads等 由此就可知 systcl 命令是通过 /proc/sys/ 目录下的各个接口文件实现配置的。...", // /proc/sys/kernel .mode = 0555, .child = kern_table, }, {....procname = "vm", // /proc/sys/vm .mode = 0555, .child = vm_table,.../sys/vm/drop_caches访问权限"644" .proc_handler = drop_caches_sysctl_handler, // handler...\n"); unregister_sysctl_table(my_ctl_header); } 通过 qemu 进入目标文件系统,使用 insmod 注册驱动,在 /proc/sys 目录下出现
未指定优先级的 printk 语句采用的默认级别是 DEFAULT_MESSAGE_LOGLEVEL,这个宏在 kernel/printk.c 中被指定为一个整数。...我们也可以通过对文本文件 /procsys/kernel/printk 的访问来读取和修改控制台的日志级别。...例如,可以简单地输入下面的命令使所有的内核消息显示到控制台上: echo 8 > /proc/sys/kernel/printk 2、重定向控制台消息 对于控制台日志策略,Linux 允许有某些灵活性:...我们可通过修改 /proc/sys/kernel/printk ratelimit(在重新打开消息之前应该等待的秒数)以及 /proc/sys/kernel/printk ratelimit burst...在系统运行时,可通过下面的命令启用 SysRq 功能: echo 0 > /proc/sys/kernel/sysrq 因为 SysRq 功能非常有用,因此这些功能也对无法访问控制台的系统管理员开放。
在编写具体的实例之前,我们先来了解下linux内核下调试程序的一个重要函数printk以及几个重要概念。 printk类似c语言的printf,是内核中输出打印信息的函数。...printk的级别 日志级别一共有8个级别,printk的日志级别定义如下(在include/linux/kernel.h中): #define KERN_EMERG 0/*紧急事件消息,系统崩溃之前提示...语句默认采用的级别是:DEFAULT_ MESSAGE_LOGLEVEL(这个默认级别一般为,即与KERN_WARNING在一个级别上),其定义在kernel/printk.c中可以找到。...在驱动调试过程中打开所有日志信息可使用echo 7 > /proc/sys/kernel/printk,相对应关闭日志使用echo 0 > /proc/sys/kernel/printk。...= /home/XXX/kernel CFG_INC = -I$(SRC_DIR) \ -I$(DIR_A) \ -I$(DIR_B) CFG_FLAGS += -O2 EXTRA_CFLAGS
领取专属 10元无门槛券
手把手带您无忧上云