【问题标题】:Strace with redirection带有重定向的 Strace
【发布时间】:2019-09-25 11:12:23
【问题描述】:

如何使用strace包含输出重定向(>),例如:

strace echo Hello > /tmp/file

产生的输出只考虑echo hello而不考虑> /tmp/file

我也试过了:

alice@vm:~$ strace -e trace=open,close,read,write echo Hello > /tmp/file

close(3)                                = 0
read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\260\34\2\0\0\0\0\0"..., 832) = 832
close(3)                                = 0
close(3)                                = 0
write(1, "Hello\n", 6)                  = 6
close(1)                                = 0
close(2)                                = 0
+++ exited with 0 +++

它显示它正在写入标准输出(文件描述符 1),但没有显示它正在重定向到 /tmp/file。

【问题讨论】:

    标签: strace


    【解决方案1】:

    带重定向的跟踪命令

    strace sh -c "echo Hello > /tmp/foo"


    将 strace 的输出重定向到输出流

    来自strace man page

    每个系统调用的名称、它的参数和它的返回值都打印在标准错误上或使用 -o 选项指定的文件中。

    所以,这就是我们可以将标准错误重定向到某个文件的方式:

    strace echo Hello 2>/tmp/file

    另一种选择是使用-o 标志:

    strace -o"/tmp/file2" echo hello

    【讨论】:

    • 感谢您的参考。但是,我的问题是关于将 echo 命令重定向到 /tmp/file,而不是 strace 输出本身。即我想查看将标准输出重定向到文件所涉及的系统调用。
    • 对不起。用适当的解决方案编辑了我的答案。这个答案能解决问题吗? :)
    • "-o" 解决了我的问题
    猜你喜欢
    • 2012-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-02
    • 1970-01-01
    • 2015-08-30
    • 2013-09-14
    相关资源
    最近更新 更多