これは次のようになります。これしかし、straceの出力を次のファイルに保存しました。
...
3691 fcntl(2, F_GETFD) = 0
3691 access("/etc/suid-debug", F_OK) = -1 ENOENT (No such file or directory)
3691 access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory)
3691 openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
3691 fstat(3, {st_mode=S_IFREG|0644, st_size=243756, ...}) = 0
3691 mmap(NULL, 243756, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7ff0696c2000
3691 close(3) = 0
3691 openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libcrypto.so.1.1", O_RDONLY|O_CLOEXEC) = 3
3691 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0\0\t\0\0\0\0\0"..., 832) = 832
3691 fstat(3, {st_mode=S_IFREG|0644, st_size=3076960, ...}) = 0
...
パスを印刷する簡単な方法はありますか?この場合、awkを使用してパスを解析するのは簡単ではないと思いますか?
ベストアンサー1
grepとsedを一緒に使用することをお勧めします。
... | grep '"/' | sed 's/^.*"\(/[^"]*\)".*$/\1/'
これはスラッシュで始まるデータ文字列からいくつかの誤検出を生成する可能性があり、リテラル二重引用符を含むパス名のために失敗する可能性があります。 。
パスパラメータを使用して、「openat」および他のシステムコールをgrepすることもできます。
... | grep -e openat -e access | sed ...
誤検知をさらに減らすため。