strace命令的学习

strace -o outputfile cat /dev/null
输出:
每一行都是一条系统调用,等号左边是系统调用的函数名及其参数,右边是该调用的返回值。
strace 显示这些调用的参数并返回符号形式的值。strace 从内核接收信息,而且不需要以任何特殊的方式来构建内核。

实例:
-c 统计每一系统调用的所执行的时间,次数和出错的次数等.

[db2inst1@hadr02 ~]$ strace -c cat /dev/null
% time     seconds  usecs/call     calls    errors syscall
------ ----------- ----------- --------- --------- ----------------
 73.58    0.000156          20         8         6 stat
 26.42    0.000056           5        12         8 open
  0.00    0.000000           0         2           read
  0.00    0.000000           0         5           close
  0.00    0.000000           0         5           fstat
  0.00    0.000000           0         8           mmap
  0.00    0.000000           0         3           mprotect
  0.00    0.000000           0         1           munmap
  0.00    0.000000           0         3           brk
  0.00    0.000000           0         1         1 access
  0.00    0.000000           0         1           execve
  0.00    0.000000           0         1           arch_prctl
------ ----------- ----------- --------- --------- ----------------
100.00    0.000212                    50        15 total

-r 打印出相对时间关于,,每一个系统调用.

[db2inst1@hadr02 ~]$ strace -r cat /dev/null
     0.000000 execve("/bin/cat", ["cat", "/dev/null"], [/* 23 vars */]) = 0
     0.001584 brk(0)                    = 0xd243000
     0.000765 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2ab7ac20c000
     0.001039 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2ab7ac20d000

-t 在输出中的每一行前加上时间信息.

[db2inst1@hadr02 ~]$ strace -t cat /dev/null
23:45:03 execve("/bin/cat", ["cat", "/dev/null"], [/* 23 vars */]) = 0
23:45:03 brk(0)                         = 0x19a54000
23:45:03 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2b05f0c96000
23:45:03 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2b05f0c97000

-T 显示每一调用所耗的时间.

[db2inst1@hadr02 ~]$ strace -T cat /dev/null
execve("/bin/cat", ["cat", "/dev/null"], [/* 23 vars */]) = 0 <0.000499>
brk(0)                                  = 0xa74d000 <0.000016>
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2ba36343a000 <0.000021>
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2ba36343b000 <0.000022>

其它:
-F 尝试跟踪vfork调用.在-f时,vfork不被跟踪.
-ff 如果提供-o filename,则所有进程的跟踪结果输出到相应的filename.pid中,pid是各进程的进程号.
-d 输出strace关于标准错误的调试信息.
-f 跟踪由fork调用所产生的子进程.
-v 输出所有的系统调用.一些调用关于环境变量,状态,输入输出等调用由于使用频繁,默认不输出.
-p pid 跟踪指定的进程pid.

40.netstat
-a:显示处于listen和非listen的东东
-t:显示tcp
-u:显示udp
-x:显示UNIX端口,UNIX端口就是只能用于本机通信的那个,速度比tcp之类的快的多
-l:只显示listen的
-p:显示进程
-n:拒绝显示别名,能显示数字的全部转化成数字。

-s:显示一些统计信息

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*