删除文件时 Cronjob 没有结束

Cronjob not ending when deleting files

当我的 cronjob 运行时,它似乎没有结束。每 2 天删除一些文件是一项简单的工作。作业不会结束,它会删除文件,但不会在不重新启动的情况下释放 space。现在机器没有可用存储空间,除非重新启动。有没有其他人遇到过这种情况,如果有,您是如何 fix/resolve 的?

0 23 */2 * * /usr/bin/find "var/log/" -name "messages*" -delete

这是我的 cronjob

这意味着这些文件被其他进程使用。在 Unix 中,当您删除文件时,inode 和 space 不会被回收,只要某些进程上仍有打开的文件描述符。

您可以使用 lsof /var/log

轻松找到持有它的进程

删除文件会 unlink 文件系统目录结构中的文件,但如果文件仍处于打开状态(由 运行 进程使用),该进程仍可访问它,并且将继续占用磁盘上的 space,因此可能需要在 file-system

上清除该文件的 space 之前重新启动这些进程

您可以获得正在使用文件的进程的 PID:lsof | grep deleted .

您可以使用他的PID检查某个进程打开了哪些文件:ls -l /proc/PID/fd

您还可以检查计算机上的锁定文件:lslockscat /proc/locks 更多详细信息)。