我正在编写一个支持捕获脚本,该脚本捆绑了与我的一些进程相关的系统上的所有核心和日志。如果其中一个进程处于转储核心的过程中,它将导致我的支持捕获捆绑一个半写核心。
为了帮助防止用户错误,我希望能够检测进程是否正在转储核心。我提出的最好的是两个黑客:
(a)在我的核心目录中查询核心的大小30秒,看看是否有任何核心正在改变大小。如果是的话,核心就会被抛弃。
(b)组合pgrep和ps -l,查看进程是否具有WCHAN状态pipe_w
是否有更优雅,更全面的证明方式?
是否有可以查询的内容会告诉我们某些东西正在倾销核心?
答案 0 :(得分:0)
lsof
命令将列出当前打开的文件以及具有句柄的进程。您还可以指示它仅列出单个文件。所以在你的情况下,你可以使用:
lsof "[absolute path to core file]"
(如果文件路径包含空格,则双引号很重要。)
如果文件已打开,则lsof将以零退出。