问题描述
当我的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
您还可以检查计算机上的锁定文件:lslocks
(更多信息cat /proc/locks
。)