日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux一直显示探测文件,如何在Linux中检测文件访问?

發布時間:2025/3/17 linux 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux一直显示探测文件,如何在Linux中检测文件访问? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一種選擇是使用strace:

strace -o logfile -eopen yourapp

這將記錄所有文件打開事件,但會造成性能上的重大下降。但是,它具有易于使用的優點。

另一種選擇是使用LD_PRELOAD。這對應于您的選項#2。基本的想法是做這樣的事情:

#define _GNU_SOURCE

#include

#include

int open(const char *fn, int flags) {

static int (*real_open)(const char *fn, int flags);

if (!real_open) {

real_open = dlsym(RTLD_NEXT, "open");

}

fprintf(stderr, "opened file '%s'\n", fn);

return real_open(fn, flags);

}

然后用:

gcc -fPIC -shared -ldl -o preload-example.so preload-example.c

并使用以下代碼運行您的程序:

$ LD_PRELOAD=$PWD/preload-example.so cat /dev/null

opened file '/dev/null'

這樣的開銷要少得多。

但是請注意,還有其他用于打開文件的入口點-例如,fopen(),openat()或許多舊版兼容性入口點之一:

00000000000747d0 g DF .text 000000000000071c GLIBC_2.2.5 _IO_file_fopen

0000000000068850 g DF .text 000000000000000a GLIBC_2.2.5 fopen

000000000006fe60 g DF .text 00000000000000e2 GLIBC_2.4 open_wmemstream

00000000001209c0 w DF .text 00000000000000ec GLIBC_2.2.5 posix_openpt

0000000000069e50 g DF .text 00000000000003fb GLIBC_2.2.5 _IO_proc_open

00000000000dcf70 g DF .text 0000000000000021 GLIBC_2.7 __open64_2

0000000000068a10 g DF .text 00000000000000f5 GLIBC_2.2.5 fopencookie

000000000006a250 g DF .text 000000000000009b GLIBC_2.2.5 popen

00000000000d7b10 w DF .text 0000000000000080 GLIBC_2.2.5 __open64

0000000000068850 g DF .text 000000000000000a GLIBC_2.2.5 _IO_fopen

00000000000d7e70 w DF .text 0000000000000020 GLIBC_2.7 __openat64_2

00000000000e1ef0 g DF .text 000000000000005b GLIBC_2.2.5 openlog

00000000000d7b10 w DF .text 0000000000000080 GLIBC_2.2.5 open64

0000000000370c10 g DO .bss 0000000000000008 GLIBC_PRIVATE _dl_open_hook

0000000000031680 g DF .text 0000000000000240 GLIBC_2.2.5 catopen

000000000006a250 g DF .text 000000000000009b GLIBC_2.2.5 _IO_popen

0000000000071af0 g DF .text 000000000000026a GLIBC_2.2.5 freopen64

00000000000723a0 g DF .text 0000000000000183 GLIBC_2.2.5 fmemopen

00000000000a44f0 w DF .text 0000000000000088 GLIBC_2.4 fdopendir

00000000000d7e70 g DF .text 0000000000000020 GLIBC_2.7 __openat_2

00000000000a3d00 w DF .text 0000000000000095 GLIBC_2.2.5 opendir

00000000000dcf40 g DF .text 0000000000000021 GLIBC_2.7 __open_2

00000000000d7b10 w DF .text 0000000000000080 GLIBC_2.2.5 __open

0000000000074370 g DF .text 00000000000000d7 GLIBC_2.2.5 _IO_file_open

0000000000070b40 g DF .text 00000000000000d2 GLIBC_2.2.5 open_memstream

0000000000070450 g DF .text 0000000000000272 GLIBC_2.2.5 freopen

00000000000318c0 g DF .text 00000000000008c4 GLIBC_PRIVATE __open_catalog

00000000000d7b10 w DF .text 0000000000000080 GLIBC_2.2.5 open

0000000000067e80 g DF .text 0000000000000332 GLIBC_2.2.5 fdopen

000000000001e9b0 g DF .text 00000000000003f5 GLIBC_2.2.5 iconv_open

00000000000daca0 g DF .text 000000000000067b GLIBC_2.2.5 fts_open

00000000000d7d60 w DF .text 0000000000000109 GLIBC_2.4 openat

0000000000068850 w DF .text 000000000000000a GLIBC_2.2.5 fopen64

00000000000d7d60 w DF .text 0000000000000109 GLIBC_2.4 openat64

00000000000d6490 g DF .text 00000000000000b6 GLIBC_2.2.5 posix_spawn_file_actions_addopen

0000000000121b80 g DF .text 000000000000008a GLIBC_PRIVATE __libc_dlopen_mode

0000000000067e80 g DF .text 0000000000000332 GLIBC_2.2.5 _IO_fdopen

為了完整起見,您可能需要鉤住所有這些內容-至少應鉤住不帶_前綴的那些。特別是,請 確保分別鉤掛fopen

,因為LD_PRELOAD庫不會鉤掛從fopen()到open()的libc內部調用。

類似的警告適用于strace-也有“

openat”系統調用,并且根據您的體系結構,可能還會有其他舊系統調用。但是不如LD_PRELOAD掛鉤那么多,因此,如果您不介意性能下降,它可能是一個更簡單的選擇。

總結

以上是生活随笔為你收集整理的linux一直显示探测文件,如何在Linux中检测文件访问?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。