# 如下 lsof 可以找到进程的路径, 但是功能强大的 lsof 性能实在不敢恭维~,因此写了个脚本。
#lsof -c /tdpcheck_p/i -a -d cwd
#lsof -c /tdpcheck_p/i -a -d txt
#lsof -F?
#lsof -F -c tdpcheck_p -a -d cwd
#lsof -Fn -c tdpcheck_p -a -d cwd
#lsof -Fn -c cws -a -d txt
#lsof -i tcp:80 -P
#!/bin/sh
FILE=/tmp/tmp0
# 80 端口的16进制
PORT=0050
echo `date` > $FILE
echo "PORT="$PORT >> $FILE
echo "" >> $FILE
less /proc/net/tcp_listen > tmp1
echo "================step 1." >> $FILE
cat tmp1 >> $FILE
INODE=`sed -n '/0050/p' tmp1 | tr -s ' ' ' ' | cut -d' ' -f11`
echo "INODE="$INODE >> $FILE
ls /proc/*/fd -l | grep "/proc/[0-9]*/fd:\|socket:/\{0,1\}\[$INODE\]" > tmp2
echo "" >> $FILE
echo "================step 2." >> $FILE
cat tmp2 >> $FILE
echo "" >> $FILE
echo "================step 3." >> $FILE
INODE_LINE=`grep -n "socket:/\{0,1\}\[$INODE\]" tmp2 | head -1 | cut -d':' -f1`
INODE_LINE=$((INODE_LINE-1))
echo "INODE_LINE="$INODE_LINE >> $FILE
sed -n "${INODE_LINE}p" tmp2 > tmp3
cat tmp3 >> $FILE
PID=`sed 's/\/fd:$//' tmp3 | sed 's/^\/proc\///'`
echo "PID="$PID >> $FILE
#rm tmp1
#rm tmp2
#rm tmp3
ls -l "/proc/$PID/exe" | sed 's/^.*exe -> //' >> $FILE
阅读(740) | 评论(0) | 转发(0) |