使用nohup啟動(dòng)的進(jìn)程,,會(huì)把所有標(biāo)準(zhǔn)輸出的打印信息記錄到nohup.out文件中,。 如果進(jìn)程長(zhǎng)時(shí)間不結(jié)束,打印信息又多,,nohup.out文件就會(huì)一直增長(zhǎng),,直至磁盤爆滿 此時(shí),如果去rm nohup.out文件不會(huì)起效,,因?yàn)檫M(jìn)程open了文件,,rm后,要進(jìn)程退出才會(huì)close文件,,才會(huì)真正釋放磁盤空間 可以用lsof|grep delete來(lái)查詢被rm但空間沒有釋放的文件 因此,,要清理nohup.out文件占用的磁盤空間,不應(yīng)該去rm文件,,而應(yīng)該清空文件內(nèi)容,,即 echo "" > nohup.out 使用nohup ... & 命令啟動(dòng)服務(wù)器后,磁盤滿了,,服務(wù)宕了,,然后一步一步排查是哪個(gè)文件過(guò)大,最終定位到是nohup.out文件過(guò)大,,占了40G,, df -lh #磁盤容量命令 du -sh #查看當(dāng)前文件夾大小 du -sh * #查看當(dāng)前文件夾下所有文件/文件夾大小,當(dāng)磁盤滿了可以從根目錄使用該命令一路排查下去,,最終定位到最大的文件 另外來(lái)說(shuō)說(shuō)nohup的問題,,都知道nohup可以后臺(tái)啟動(dòng)服務(wù)并且輸出日志,,問題是不加控制nohup是無(wú)限制的輸出日志,硬盤占滿是早晚的事,,筆者百度了一下可以通過(guò)以下方式解決 不生成nohup文件: nohup ./a.sh >/dev/null 2>&1 & 關(guān)鍵在于最后的 >/dev/null 2>&1 部分,,/dev/null是一個(gè)虛擬的空設(shè)備(類似物理中的黑洞),任何輸出信息被重定向到該設(shè)備后,,將會(huì)石沉大海 >/dev/null 表示將標(biāo)準(zhǔn)輸出信息重定向到"黑洞" 2>&1 表示將標(biāo)準(zhǔn)錯(cuò)誤重定向到標(biāo)準(zhǔn)輸出(由于標(biāo)準(zhǔn)輸出已經(jīng)定向到“黑洞”了,,即:標(biāo)準(zhǔn)輸出此時(shí)也是"黑洞",再將標(biāo)準(zhǔn)錯(cuò)誤輸出定向到標(biāo)準(zhǔn)輸出,,相當(dāng)于錯(cuò)誤輸出也被定向至“黑洞”) |
|