linux awk sed strace,strace输出处理

我是这样使用strace的:

在strace -xf -eopen -o out_configure.log ./configure

strace -xf -eopen -o out_make.log make

然后我得到了sed的清晰文件列表:

^{pr2}$

有一个输出示例:/usr/share/locale-langpack/en.utf8/LC_MESSAGES/gcc-4.6.mo

/usr/share/locale-langpack/en.UTF-8/LC_MESSAGES/gcc-4.6.mo

/usr/share/locale-langpack/en.utf8/LC_MESSAGES/grep.mo

/usr/share/locale-langpack/en.UTF-8/LC_MESSAGES/grep.mo

/usr/share/locale-langpack/en.utf8/LC_MESSAGES/make.mo

/usr/share/locale-langpack/en.UTF-8/LC_MESSAGES/make.mo

/usr/share/locale/locale.alias

/usr/share/misc/magic.mgc

/usr/x86_64-linux-gnu/lib64/libc_r.a

/usr/x86_64-linux-gnu/lib64/libc_r.so

/usr/x86_64-linux-gnu/lib64/libsendfile.a

/usr/x86_64-linux-gnu/lib64/libsendfile.so

/usr/x86_64-linux-gnu/lib64/libtruerand.a

/usr/x86_64-linux-gnu/lib64/libtruerand.so

/usr/x86_64-linux-gnu/lib64/libuuid.a

/usr/x86_64-linux-gnu/lib64/libuuid.so

util.c

util_cfgtree.c

./util_cfgtree.h

util_cfgtree.h

util_cfgtree.i

./util_cfgtree.lo

util_cfgtree.lo

util_cfgtree.loT

util_cfgtree.o

util_cfgtree.s

util_charset.c

./util_charset.h

我的问题是非全名条目(例如“util.c”或“../util\u cfgtree.h”)。

有没有办法在strace输出中获取全名?在

我写了这个剧本:#!/usr/bin/python

# coding=UTF8

import subprocess

import os

fileList = []

for dirname, dirnames, filenames in os.walk(os.path.abspath('.')):

for filename in filenames:

fileList.append(os.path.join(dirname, filename))

straceProcess = subprocess.Popen("strace -s 1000 -xf -o out_configure.sed.log ./configure".split(), stdout=subprocess.PIPE).communicate()[0]

straceProcess2 = subprocess.Popen("strace -s 1000 -xf -o out_make.sed.log make".split(), stdout=subprocess.PIPE).communicate()[0]

f = open("out_configure.sed.log", "r+")

n = open("out_make.sed.log", "r+")

lines = []

for l in f:

lines.append(l)

for l in n:

lines.append(l)

f.close()

n.close()

pids = {}

filesInUse = []

currentDir = os.path.abspath('.')

for line in lines:

parts = line.split()

if not pids.has_key(parts[0]):

pids[parts[0]] = currentDir

if parts[1].startswith("clone"):

pid = parts[parts.__len__() - 1]

if not pids.has_key(pid):

pids[pid] = os.path.abspath(pids.get(parts[0]))

elif parts[1].startswith("chdir"):

if parts[1].split("\"")[1].startswith("/"):

pids[parts[0]] = os.path.abspath(parts[1].split("\"")[1])

elif parts[1].split("\"")[1].startswith("."):

pids[parts[0]] = os.path.abspath(pids.get(pids[parts[0]]) + '/' + parts[1].split("\"")[1])

else:

pids[parts[0]] = os.path.abspath(pids.get(parts[0]) + '/' + parts[1].split("\"")[1])

elif parts[1].startswith("open("):

if parts[1].split("\"")[1].startswith("/"):

filesInUse.append(os.path.abspath(parts[1].split("\"")[1]))

elif parts[1].split("\"")[1].startswith("."):

filesInUse.append(os.path.abspath(pids.get(parts[0]) + '/' + parts[1].split("\"")[1]))

else:

filesInUse.append(os.path.abspath(pids.get(parts[0]) + '/' + parts[1].split("\"")[1]))

for l in filesInUse:

if l in fileList:

fileList.remove(l)

for l in fileList:

print l

但是我对Python的了解很差。在

是否有错误或错误的解决方案?在

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值