命令关闭得太快,我无法找到它

命令关闭得太快,我无法找到它

可能很白痴,但我正在运行一个完成速度非常快的命令,所以我没有足够的时间从另一个窗口 lsof 它并查看它打开了哪些文件。是否有一些明显的方法来运行命令并立即将 lsof 附加到它? (最好继续跟踪它打开了哪些文件,直到完成)

编辑 - 我也可以很高兴在进程关闭后将 lsof 附加到进程中,我不必实时查看它正在打开的文件

答案1

在这种情况下lsof可能不是最实用的工具。我会strace在这种情况下使用。例如,查看ls命令在其短暂运行时间内打开哪些文件:

strace -e trace=open ls

答案2

您可以在一个窗口中使用该命令watch,例如:

watch -d 'lsof| `fgrep cron`'

该命令每两秒刷新一次窗口;您可以减少 -n 选项的时间,请参阅 中的更多详细信息man watch

管道| fgrep cron可以帮助您只看到您正在搜索的结果。

当您在另一个窗口中使用该命令时,您将在这种情况下看到与 cron 命令关联的文件和用户。通过您的特定命令或程序更改 cron 命令。

答案3

您可以考虑使用“strace”:它会向您显示从执行开始的系统调用,从而包括文件打开情况。

答案4

您可以使用以下命令实时监控所有打开的文件:

sudo sysdig -p "%12user.name %6proc.pid %12proc.name %3fd.num %fd.typechar %fd.name" evt.type=open

对于特定的进程/命令名称(不是脚本),您可以执行以下操作:(例如 apache2 的示例)

sudo sysdig -p "%12user.name %6proc.pid %12proc.name %3fd.num %fd.typechar %fd.name" evt.type=open and proc.name=apache2

相关内容