strace追踪未开始或者来不及捕获pid的进程(译)
我的个人博客网站最近被攻击了,被用来发送一些垃圾邮件。但是我不知道这个进程是怎么来的,用top查看发现一个不知道干什么的perl脚本,决定给用strace查看一下。
strace可以追踪一个进程的系统调用通过pid,像:
strace -vvtf -p 1234
但是这个perl脚本的进程结束的太快了,不能用捕获pid然后strace它。
用下边这个脚本,可以通过进程名称追踪一个未开始的进程:
while true; do pid=$(pgrep 'processname' | head -1); if [[ -n "$pid" ]]; then strace -s 2000 -vvtf -p "$pid"; break; fi; done
这个技巧可以被用来strace一些不知道pid或者在捕获到pid前就已经结束的进程。
原文地址:http://konrness.com/linux/how-to-strace-a-process-that-has-not-started-yet/