首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Unix strace命令

Unix strace命令
EN

Stack Overflow用户
提问于 2010-08-23 13:50:46
回答 1查看 2.3K关注 0票数 0

为了监视cp进度,我找到了下面的bash脚本。

代码语言:javascript
复制
#!/bin/sh
cp_p()
{
   strace -q -ewrite cp -- "${1}" "${2}" 2>&1 \
      | awk '{
        count += $NF
            if (count % 10 == 0) {
               percent = count / total_size * 100
               printf "%3d%% [", percent
               for (i=0;i<=percent;i++)
                  printf "="
               printf ">"
               for (i=percent;i<100;i++)
                  printf " "
               printf "]\r"
            }
         }
         END { print "" }' total_size=$(stat -c '%s' "${1}") count=0
}

我不明白strace命令的"-ewrite“选项。我发现的最接近的东西是斯特拉斯的手册

-e write=set对写入指定集中列出的文件描述符的所有数据执行完整的十六进制和ASCII转储。例如,要查看文件描述符3和5上的所有输出活动,请使用-e write=3,5。注意,这与由选项-e trace=write控制的写(2)系统调用的正常跟踪无关。

但是,我不明白-ewrite选项是干什么的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-08-23 13:55:56

-ewrite意味着只跟踪“写”系统调用。

-e expr是一个限定表达式,它修改要跟踪的事件或如何跟踪它们。表达式的格式是:

qualifier=value1,value2.其中限定符是跟踪、缩写、冗长、原始、信号、读或写,值是与质量有关的符号或数字。默认的查询符是跟踪。使用感叹号否定一组值。例如,-eopen意味着点燃-e trace=open,这反过来意味着只跟踪开放的系统调用。相反,-etrace=!open意味着跟踪除open之外的所有系统调用。另外,特殊的价值都和没有有明显的意义。请注意,有些shell使用感叹号表示历史扩展,甚至在引用的参数中也是如此。如果是这样,则必须用反斜杠.转义感叹号。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3548192

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档