MacOS下如何追踪命令访问的文件?替代Linux的strace工具
MacOS下替代strace的文件访问追踪工具
MacOS上最接近strace的工具是dtruss,它基于DTrace框架,能直接追踪进程的系统调用,包括所有文件访问操作,完全能解决短生命周期进程无法用lsof捕获的问题。
dtruss的基础用法
追踪新启动命令的文件相关操作:
直接在目标命令前加上dtruss,同时过滤出文件相关的系统调用(避免输出冗余信息),需要sudo权限:sudo dtruss -f -t open,read,write ls其中:
-f:同时追踪命令启动的子进程-t open,read,write:只保留文件打开、读取、写入的系统调用记录
追踪已运行进程(需快速获取PID):
sudo dtruss -p <进程PID> -t open,read,write
其他可选工具
如果只专注于文件系统层面的活动,fs_usage也是个不错的选择,它的输出更聚焦文件操作细节:
sudo fs_usage -f filesys <目标命令>
注意事项
MacOS系统自带的二进制程序(比如ls、cat)受系统完整性保护(SIP)限制,用dtruss追踪前需要临时关闭SIP,操作方式是重启到恢复模式后执行csrutil disable,用完再重新开启。
内容的提问来源于stack exchange,提问作者eof
相关产品推荐
相关产品推荐

