删除文件时Cronjob没有结束

问题描述

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

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

这是我的工作

解决方法

这意味着文件被其他进程使用。在Unix中,当删除文件时,只要某个进程仍在上面打开文件描述符,就不会回收inode和空间。

您可以使用lsof /var/log

轻松找到持有它的进程 ,

从文件系统的目录结构中删除文件将unlink,但是如果该文件仍处于打开状态(正在由运行中的进程使用),则该进程仍可访问该文件,并且将继续占用文件系统上的空间。磁盘,因此可能需要重新启动这些进程,然后才能在文件系统上清除该文件的空间

您可以获取使用以下文件的进程的PID:lsof | grep deleted

您可以通过ls -l /proc/PID/fd

使用其PID来检查由某个进程打开的文件。

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