linux – / dev / console动态重定向
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了linux – / dev / console动态重定向,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1738字,纯文字阅读大概需要3分钟。
内容图文
![linux – / dev / console动态重定向](/upload/InfoBanner/zyjiaocheng/958/b9debbd547d041148d19372f5f93e40d.jpg)
是否可以动态地将发送到/ dev / console的所有数据重定向到其他内容(例如 – 到/ dev / null,/ dev / tty9甚至/ dev / null)?
当然,它可以通过console = XXX内核引导参数(或单个程序的标准管道重定向)静态完成.问题是我需要根据来自外部设备的数据动态地(以及所有输出的程序)执行此操作.
有什么建议?
解决方法:
我可以想到几个选项,它们的有效性取决于事物如何进入“控制台”.
对于内核源消息,最简单的方法是使用dmesg -n 1来禁用(几乎所有)控制台消息,并使用syslogd / klogd来提取并记录它们或转发它们.无论控制台日志级别如何,所有内核消息仍会被记录并可通过/ proc / kmsg(或sys_syslog())访问.对此的一个变体是使用quiet来启动内核,这会抑制printk()输出,并且仅依赖syslogd / klogd来处理内核消息.
更具冒险性和全面性的选择是使用控制台模块,这些模块在VM guest虚拟机中更常用,以便VM主机可以直接访问guest虚拟机控制台.有two types,系统驱动程序(例如x86 PC上的“VGA”,内核“console =”选项);和模块化驱动程序,可以根据需要加载和卸载,并可以接管系统驱动程序.一个可能有用的驱动程序是netconsole,虽然它很容易加载和卸载(它可以用作系统和模块化驱动程序),但有两个缺点:
>它没有take_over_console()所以一切都仍然进入原始控制台
>它只通过以太网记录(不支持环回)
您可以使用“虚拟”控制台以及上面的选项之一执行一些有用的操作. netcat或socat为netconsole做好“客户”:
modprobe netconsole "netconsole=55514@10.0.2.15/eth0,6667@10.1.2.3/ff:ff:ff:ff:ff:ff"
socat UDP4-LISTEN:55514 -
如果您对从单个系统服务捕获控制台输出更感兴趣,那么我认为没有脚本修改的简单方法.
这样做的不简单(也可能不是很好)包括使用LD_PRELOAD来劫持生成输出的重定向函数,或添加一些_init代码来修改默认文件描述符.或者更糟糕的是:附加一个调试器和manipulating the open file descriptors. /etc/ld.so.preload将是一个简单的(如果是hackish和稍微讨厌)实现第一个选项的方式.
如果我想监视守护进程的控制台输出,我可能会修改启动脚本以在屏幕会话中运行它们,也许是like so.
内容总结
以上是互联网集市为您收集整理的linux – / dev / console动态重定向全部内容,希望文章能够帮你解决linux – / dev / console动态重定向所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。