服务器空间告警不足, 定位到日志位置, 对日志进行了rm -f log.name
操作,发现删除后空间不释放
然后使用lsof查看文件, 发件句柄没有释放掉, 这种情况有两种处理办法,
- 重新启动进程, 或者重启服务器.
- 找到对应的文件句柄数,这样不需要重启应用
通过上面的截图可以定位到进程是supervisor
, 进程号是1448, 所以找到对应的进程目录
$ cd /proc/1448/fd
$ ll
lr-x------ 1 root root 64 Jun 21 21:12 0 -> /dev/null
l-wx------ 1 root root 64 Jun 21 21:12 1 -> /dev/null
l-wx------ 1 root root 64 Jun 21 21:12 10 -> pipe:[18717]
lr-x------ 1 root root 64 Jun 21 21:12 11 -> pipe:[59624434]
lr-x------ 1 root root 64 Jun 21 21:12 12 -> pipe:[18718]
l-wx------ 1 root root 64 Jun 21 21:12 13 -> pipe:[18719]
lr-x------ 1 root root 64 Jun 21 21:12 15 -> pipe:[18720]
l-wx------ 1 root root 64 Jun 21 21:12 16 -> pipe:[18721]
l-wx------ 1 root root 64 Jun 21 21:12 17 -> /home/logs/openapiai.2020-05-27.001.log (deleted)
lr-x------ 1 root root 64 Jun 21 21:12 18 -> pipe:[18722]
l-wx------ 1 root root 64 Jun 21 21:12 19 -> pipe:[18723]
l-wx------ 1 root root 64 Jun 21 21:12 2 -> /dev/null
l-wx------ 1 root root 64 Jun 21 21:12 20 -> /var/log/supervisor/salt_access.log
lr-x------ 1 root root 64 Jun 21 21:12 21 -> pipe:[18724]
l-wx------ 1 root root 64 Jun 21 21:12 23 -> /var/log/supervisor/confd.log
l-wx------ 1 root root 64 Jun 21 21:12 3 -> /var/log/supervisor/supervisord.log
lrwx------ 1 root root 64 Jun 21 21:12 4 -> socket:[21049]
l-wx------ 1 root root 64 Jun 21 21:12 5 -> /var/log/supervisor/metricbeat_access.log
l-wx------ 1 root root 64 Jun 21 21:12 6 -> /var/log/supervisor/agent_access.log
lr-x------ 1 root root 64 Jun 21 21:12 7 -> /dev/urandom
l-wx------ 1 root root 64 Jun 21 21:12 9 -> pipe:[59624433]
然后通过上面的日志可以定位到是 17 的这个链接文件指向了/home/logs/openapiai.2020-05-27.001.log (deleted)
, 所以处理这个文件就可以了, 这里直接 echo > 17
, 然后在进行空间查看, 空间已释放.