一次在操作中發現,使用命令df -h查看磁盤空間,顯示已用磁盤空間為90GB,而用命令du -sh /*查看,顯示所有使用空間加起來只有30GB。為什么會出現這種文件已刪除,磁盤空間卻沒釋放的問題呢?經研究發現,可能是在操作中直接用命令rm刪除某個正在寫的文件導致的。
解決方法:
1.重啟系統或者重啟相關服務。
2.以筆者使用的系統為例,可以刪除進程/usr/sbin/lsof|grep?delete d?ora?25575?data?33u?R EG?65,65?4294983680?/oradata/DATAPRE/UNDOTBS009.dbf?(deleted)?。因為從lsof的輸出中,發現pid為25575的進程持有著以文件描述號(fd)為33打開的文件/oradata/DATAPRE/UNDOTBS009.dbf。找到了這個文件之后,可以通過結束進程的方式來釋放被占用的空間,使用命令:
echo > /proc/25575/fd/33
3.刪除正在寫的文件,一般使用命令:
cat /dev/null > file g :% s/^M//g (^M 輸入用Ctrl+v, Ctrl+m),啟動腳本。
某一天,想查看已寫好的shell腳本,腳本很簡單,也沒有常規性的錯誤,卻一直報“:bad interpreter: No such file or directory”錯誤,無法正常執行。這是一個在Windows下編寫的腳本,然后再上傳到Linux服務器中。經研究發現,在DOS/Windows里,文本文件的換行符為rn,而在Linux系統里 為n,所 以,DOS/Windows里編輯過的文本文件到了*nix里,每一行都多了已個^M,就會出現這種shell腳本不執行的情況。
解決方法:
1.重新在Linux下編寫腳本。
2.使用命令vi :% s/r//
一次在操作中發現,/var/spool/clientmqueue目錄占用空間超過100GB。和同事一起研究一番發現,cron中執行的程序有輸出內容,輸出內容會以郵件形式發給cron的用戶,而SendMail沒有啟動,所以就產生了/var/spool/clientmqueue目錄下的許多文件。
解決方法:
1.手動刪除文件,使用命令 :ls |xargs rm -f。
2.徹底解決:在cron的自動執行語句后加上 >/dev/null 2>&1。
有一段時間,在tmp目錄下有大量包含picture_*的臨時文件,每天凌晨2:30對一天前的文件進行清理。之前在crontab下運行腳本#!/bin/sh find /tmp -name“picture_*”
-mtime +1-exec rm -f {},但是發現腳本效率很低,每次執行時負載猛漲,影響到其他服務。
解決方法:

