linux下用strace追踪bash执行的命令程序

 

1、获取当前bash进程号

[root@yglocal ~]# echo $$
8260
[root@yglocal ~]# ps -ef |grep $$
root       8260   8256  0 10:51 pts/0    00:00:00 -bash
root       8402   8260  0 11:11 pts/0    00:00:00 ps -ef
root       8403   8260  0 11:11 pts/0    00:00:00 grep --color=auto 8260
[root@yglocal ~]# w
 11:11:43 up 22 min,  1 user,  load average: 0.00, 0.01, 0.05
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    192.168.187.1    10:51    7.00s  0.42s  0.04s w

 

2、是要strace追踪bash进程执行execve的事件

[root@yglocal ~]# strace -f -e execve -p $$ -v &
[1] 8405
[root@yglocal ~]# strace: Process 8260 attached

[root@yglocal ~]# ls
strace: Process 8407 attached
[pid  8407] execve("/usr/bin/ls", ["ls", "--color=auto"], ["XDG_SESSION_ID=2", "HOSTNAME=yglocal", "SELINUX_ROLE_REQUESTED=", "TERM=vt100", "SHELL=/bin/bash", "HISTSIZE=1000", "SSH_CLIENT=192.168.187.1 7314 22", "SELINUX_USE_CURRENT_RANGE=", "SSH_TTY=/dev/pts/0", "USER=root", "LS_COLORS=rs=0:di=01;34:ln=01;36"..., "MAIL=/var/spool/mail/root", "PATH=/usr/local/sbin:/usr/local/"..., "PWD=/root", "LANG=en_US.UTF-8", "SELINUX_LEVEL_REQUESTED=", "HISTCONTROL=ignoredups", "SHLVL=1", "HOME=/root", "LOGNAME=root", "SSH_CONNECTION=192.168.187.1 731"..., "LESSOPEN=||/usr/bin/lesspipe.sh "..., "XDG_RUNTIME_DIR=/run/user/0", "_=/usr/bin/ls"]) = 0
12121       dd_mbr.strace    intel-01.S  linux310  mbr.bin      mbr.bin.bak1      perf.data   stap.log
anaconda-ks.cfg  a.out    flamegraph   kernel_rpm  main.c    mbr.bin.bak  sk-txq.stp  test
[pid  8407] +++ exited with 0 +++
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=8407, si_uid=0, si_status=0, si_utime=0, si_stime=9} ---
[root@yglocal ~]# ll
strace: Process 8408 attached
[pid  8408] execve("/usr/bin/ls", ["ls", "--color=auto", "-l", "--color=auto"], ["XDG_SESSION_ID=2", "HOSTNAME=yglocal", "SELINUX_ROLE_REQUESTED=", "TERM=vt100", "SHELL=/bin/bash", "HISTSIZE=1000", "SSH_CLIENT=192.168.187.1 7314 22", "SELINUX_USE_CURRENT_RANGE=", "SSH_TTY=/dev/pts/0", "USER=root", "LS_COLORS=rs=0:di=01;34:ln=01;36"..., "MAIL=/var/spool/mail/root", "PATH=/usr/local/sbin:/usr/local/"..., "PWD=/root", "LANG=en_US.UTF-8", "SELINUX_LEVEL_REQUESTED=", "HISTCONTROL=ignoredups", "SHLVL=1", "HOME=/root", "LOGNAME=root", "SSH_CONNECTION=192.168.187.1 731"..., "LESSOPEN=||/usr/bin/lesspipe.sh "..., "XDG_RUNTIME_DIR=/run/user/0", "_=/usr/bin/ls"]) = 0
total 167200
-rw-r--r--. 1 root root        90 Mar 31 16:07 12121
-rw-------. 1 root root      1420 Aug  6  2019 anaconda-ks.cfg
-rwxr-xr-x. 1 root root      8552 Apr  2 18:01 a.out
-rw-r--r--. 1 root root     78637 Aug  8  2019 dd_mbr.strace
drwxr-xr-x. 3 root root        24 Apr  3 10:56 flamegraph
-rw-r--r--. 1 root root    902604 Apr  2 17:47 intel-01.S
drwxr-xr-x. 2 root root       129 Mar 26 14:09 kernel_rpm
-rw-r--r--. 1 root root 126439378 Mar 12 15:37 linux310
-rw-r--r--. 1 root root      3039 Aug  6  2019 main.c
-rw-r--r--. 1 root root       512 Aug  8  2019 mbr.bin
-rw-r--r--. 1 root root       512 Aug  8  2019 mbr.bin.bak
-rw-r--r--. 1 root root       512 Aug  8  2019 mbr.bin.bak1
-rw-------. 1 root root    673364 Apr  2 18:04 perf.data
-rw-r--r--. 1 root root       299 Apr  3 10:24 sk-txq.stp
-rw-r--r--. 1 root root  43040602 Mar 30 15:02 stap.log
drwxr-xr-x. 3 root root       180 Jun  2 20:43 test
[pid  8408] +++ exited with 0 +++
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=8408, si_uid=0, si_status=0, si_utime=0, si_stime=1} ---
[root@yglocal ~]# pwd
/root
[root@yglocal ~]# 
[root@yglocal ~]# /bin/pwd
strace: Process 8409 attached
[pid  8409] execve("/bin/pwd", ["/bin/pwd"], ["XDG_SESSION_ID=2", "HOSTNAME=yglocal", "SELINUX_ROLE_REQUESTED=", "TERM=vt100", "SHELL=/bin/bash", "HISTSIZE=1000", "SSH_CLIENT=192.168.187.1 7314 22", "SELINUX_USE_CURRENT_RANGE=", "SSH_TTY=/dev/pts/0", "USER=root", "LS_COLORS=rs=0:di=01;34:ln=01;36"..., "MAIL=/var/spool/mail/root", "PATH=/usr/local/sbin:/usr/local/"..., "PWD=/root", "LANG=en_US.UTF-8", "SELINUX_LEVEL_REQUESTED=", "HISTCONTROL=ignoredups", "SHLVL=1", "HOME=/root", "LOGNAME=root", "SSH_CONNECTION=192.168.187.1 731"..., "LESSOPEN=||/usr/bin/lesspipe.sh "..., "XDG_RUNTIME_DIR=/run/user/0", "_=/bin/pwd"]) = 0
/root
[pid  8409] +++ exited with 0 +++
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=8409, si_uid=0, si_status=0, si_utime=0, si_stime=6} ---
[root@yglocal ~]# 

注意,这里strace的参数说明:

-f参数表示追踪bash fork出的子进程;

-e参数后面跟的是要追踪的系统调用(这里是execve)

-p参数后跟要strace的进程pid(这里是$$,也即是当前终端bash进程的pid)

-v参数输出详细信息

最后 & 参数,让strace在后台运行,不然无法使用终端了

3、停止追踪

对于后台进程,可以fg将后台进程恢复到前台,然后ctrl + c终止进程。

[root@yglocal ~]# fg
strace -f -e execve -p $$ -v
^Cstrace: Process 8260 detached
[root@yglocal ~]# 
[root@yglocal ~]# ls
12121            dd_mbr.strace    intel-01.S  linux310  mbr.bin      mbr.bin.bak1      perf.data   stap.log
anaconda-ks.cfg  a.out     flamegraph               kernel_rpm  main.c    mbr.bin.bak  sk-txq.stp  test

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值