linux删除日志但没有释放空间问题溯源
删除正在被占用的日志文件时,存储空间没有被释放.
rm filename
命令删除文件后,
df -h
按G查看磁盘使用情况.发现空间没有被释放掉.
lsof |grep delete
通过上述命令可以查看删除文件被占用情况.第二列为对应应用的PID.
kill掉相应的应用后文件被占用的空间被释放.
总结:
当log文件过大,被错误日志塞满磁盘时,使用rm删除文件无法清除被占用的文件空间.需要停止占用的应用.
若想不停止服务来清理空间,可以使用 echo "" > filename
来覆盖文件.这样文件没有删除,但存储空间被删除了.
lsof: 列出打开文件 [在Unix中一切(包括网络套接口)都是文件]
获取网络信息
语法:
lsof -i[46] [protocol][@hostname|hostaddr][:service|port]
eg:
lsof -i 4
获取使用ipv4的网络连接信息
lsof -i TCP
获取使用tcp的网络连接信息
lsof -i -sTCP:LISTEN
或 lsof -i |grep -i LISTEN
找出正等候连接的端口
lsof -u konghenying
显示指定用户[konghenying]打开了什么
lsof -u ^konghenying
显示除指定用户外打开了什么
lsof -c command
查看指定命令正在使用的文件或网络连接
lsof -p pid
查看指定进程正在使用的文件或网络
lsof /dir
显示与指定文件交互的所有一切
lsof +d /dir
显示目录下被进程打开的文件 [+D 递归]
lsof |more
通过more方式的形式展示过长的列表