我很新兴strace / netstat / etc.我正在使用此命令来获取处理我的请求(telnet)的apache进程的跟踪,有没有办法简化它?
sudo strace -o /tmp/strace -f -s4096 -r -p $(netstat -antlp | \ grep $(lsof -p `pidof telnet` | grep TCP | \ perl -n -e'/localhost:(\d+)/ && print $1') | grep apache2 | \ perl -n -e'/ESTABLISHED (\d+)/ && print $1')
谢谢!
我可以改进马克亨德森的一点点,用$()代替“并用更好的sed删除grep:
sudo strace -o /tmp/strace -f -s4096 -r -p $(netstat -antlp | \ sed -e "/telnet/s/^.*ESTABLISHED\ \|\/.*$//g")
就个人而言,我认为反引号使其难以阅读;此外,与$()语法不同,它们不会嵌套