防止应用程序(iscsiadm)记录到 dmesg?

防止应用程序(iscsiadm)记录到 dmesg?

我遇到了一个问题,sudo iscsiadm -m 发现 -t st -p知识产权-l将日志记录到服务器上所有终端的 dmesg 中。

该命令从 Java 应用程序运行,使用:

    Runtime.getRuntime().exec("/bin/bash", "-c", "sudo iscsiadm -m discovery -t st -p *IP* -l");

我尝试了以下方法:

  1. 附加到命令> /dev/null 2>&1末尾iscsiadm discovery...
  2. 从返回的进度中捕获输入流(process.getInputStream()process.getErrorStream()
  3. 附加> /dev/null 2>&1到启动 Jar 的软件。

上述任何尝试都无法阻止跨所有虚拟终端进行日志记录。日志开始[some_num.some_dec] LOG_MESSAGE显示它正在输出到dmesg?如果这是真的,我该如何防止这种情况发生?目前,它使系统无法调试,因为它正在终端提示上打印。

谢谢

答案1

iscsiadm 控制内核 iSCSI 子系统,消息实际上并非来自程序 - 它们直接来自内核驱动程序。

使用dmesg -n warning或启动以loglevel=4减少无用消息的数量。

答案2

问题已修复。

事实证明,不是 iscsiadm 记录到 dmesg,而是随后的 mount 命令,因为 blockdev 不存在。

我已经修改了我的 Java 代码,然后尝试iscsiadm -m discovery...运行iscsiadm -m session以确定在安装之前适当的设备是否具有连接。

相关内容