linux动态重定向文件,linux – / dev / console动态重定向

本文探讨了如何动态地将/Linux系统中发送到/dev/console的数据重定向到其他位置,如/dev/null或其他TTY设备。讨论了不同的解决方案,包括使用dmesg、syslogd/klogd、netconsole模块以及通过修改启动脚本来实现。同时也提到了一些冒险的方法,如使用LD_PRELOAD或调试器操纵文件描述符。
摘要由CSDN通过智能技术生成

是否可以动态地将发送到/ 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:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值