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