0

我正在编写一个支持捕获脚本,它捆绑了与我的一些进程相关的所有内核和系统日志。如果其中一个进程正在转储核心,这将导致我的支持捕获捆绑了一个半写的核心。

为了帮助防止用户错误,我希望能够检测进程是否正在转储核心。我想出的最好的是两个黑客:

(a) 查询核心的大小,在我的核心目录中持续 30 秒,看看是否有任何核心在改变大小。如果是,则正在转储一个核心。

(b) 结合 pgrep 和 ps -l ,查看进程是否有 pipe_w 的 WCHAN 状态

有没有更优雅和完整的证明方法来做到这一点?

是否有一些可以查询的东西会告诉我们某些东西正在倾销核心?

4

1 回答 1

0

lsof命令将列出当前打开的文件和拥有它们句柄的进程。您还可以指示它仅列出一个文件。因此,在您的情况下,您可以使用:

lsof "[核心文件的绝对路径]"

(如果文件路径包含空格,双引号很重要。)

如果文件已打开,则 lsof 将以零退出。

于 2013-09-20T15:05:33.810 回答