为什么删除文件后 df -h 仍然显示 100% full?

And*_*rew 6 ubuntu filesystems nginx du df

我在 DigitalOcean 上运行的 Ubuntu Web 服务器上的磁盘空间似乎已满。我已经找到并删除了大日志文件并重新启动了 Nginx。不过,看起来还是有问题。

df显示它仍然是满的:

$ df -h /
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda1        50G   47G   22M 100% /
Run Code Online (Sandbox Code Playgroud)

du显示它尚未满:

$ du -shx /
3.2G    /
Run Code Online (Sandbox Code Playgroud)

我需要做什么来解决这个问题?

And*_*rew 7

首先检查是否有任何进程仍在引用已删除的文件:

$ sudo lsof / | grep deleted
Run Code Online (Sandbox Code Playgroud)

就我而言,它表明tail仍在使用它:

tail      18961       root    3r   REG  253,1 46511271936 1189657 /var/www/myapp/shared/log/production.log (deleted)
Run Code Online (Sandbox Code Playgroud)

按进程名称运行ps x和过滤显示了我需要杀死的进程 ID:

$ ps x | grep tail
 3376 pts/1    S+     0:00 grep --color=auto tail
18961 ?        Ss     0:00 tail -f /var/www/myapp/current/log/production.log
Run Code Online (Sandbox Code Playgroud)

在本例中,18961 是进程 ID。现在杀死进程:

kill 18961
Run Code Online (Sandbox Code Playgroud)

现在df显示再次有可用空间:

$ df -h /
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda1        50G  3.3G   44G   7% /
Run Code Online (Sandbox Code Playgroud)