重慶分公司,新征程啟航
為企業提供網站建設、域名注冊、服務器等服務
為企業提供網站建設、域名注冊、服務器等服務
例: vi /var/log/messages :set nu 查看文件中的你要刪除的時間段在幾行之間 如果是100-200行,則將光標放在第100行,按100dd即可刪除。 還有其他方法。看你的具體需求。
創新互聯服務項目包括清河網站建設、清河網站制作、清河網頁制作以及清河網絡營銷策劃等。多年來,我們專注于互聯網行業,利用自身積累的技術優勢、行業經驗、深度合作伙伴關系等,向廣大中小型企業、政府機構等提供互聯網行業的解決方案,清河網站推廣取得了明顯的社會效益與經濟效益。目前,我們服務的客戶以成都為中心已經輻射到清河省份的部分城市,未來相信會繼續擴大服務區域并繼續獲得客戶的支持與信任!
可直接進去到日志存儲地方,用rm x -rf,刪除日志即可,x為你要刪除的日志文件。
nohup命令 將程序以忽略掛起信號的方式運行起來,被運行的程序的輸出信息將不會顯示到終端。一般用于將程序的輸出、報錯信息重定向到一個指定路徑的指定文件。
語法 :nohup [command] [args] [] ? ?
nohup命令 最后要帶個作為結束
例:nohup python XXX.py abc/def/XXX.log 21
args: 0 – stdin (standard input),1 – stdout (standard output),2 – stderr (standard error) ;
21是將標準錯誤(2)重定向到標準輸出(1),標準輸出(1)再被重定向輸入到文件,即XXX.log中。
nohup命令的缺點:日志文件文件越來越大,占內存且查看麻煩。因為這個日志文件和程序是共生死的,因為只要程序運行起來,就一直對log文件進行讀寫,直接刪除XXX.log會導致程序也被結束了。
目前想到的一些相關方法如下,并未完全解決問題。
參考: linux下nohup日志輸出過大問題解決方案
split命令:
參數:-b:值為每一輸出檔案的大小,單位為 byte。
? ? ?? -C:每一輸出檔中,單行的最大 byte 數。
? ? ?? -d:使用數字作為后綴。默認這個數字后綴是兩位的,例如00,01,11. -a: 指定位數,例如 -a 4表示后綴是四位的。
? ? ?? -l:值為每一輸出檔的列數大小。
? ? ?? PREFIX:代表前導符,可作為切割文件的前導文件。
例如:
可以用split命令把很大的日志文件分成多個小文件,分割完成后 原文件不變 。不會影響nohup運行的程序。
缺點:split文件分割依賴手動,當程序出故障或調試時,將日志分割以便查看最新的日志信息。沒法定時做到定時自動清理。
首先介紹find命令的參數
參考: linux find命令詳解
在這里主要用到的是這幾個參數:
-atime n 查找系統中最后n*24小時訪問的文件
-ctime n? 查找系統中最后n*24小時被改變文件狀態的文件
-mtime n? 查找系統中最后n*24小時被改變文件數據的文件
+n: n天前; -n: n天之內
find命令還可以和下一條命令連用(xargs或exec)
或
注:{}表示find到的東西;{}和 \;之間要有一個空格
我感覺exec不是很好用,怪怪的
cat dev/null
在 Linux 中, null 設備基本上被用來丟棄某個進程不再需要的輸出流,或者作為某個輸入流的空白文件,這些通常可以利用重定向機制來達到。
所以 /dev/null 設備文件是一個特殊的文件,它將清空送到它這里來的所有輸入,而它的輸出則可被視為一個空文件。另外,你可以通過使用 cat 命令顯示 /dev/null 的內容然后重定向輸出到某個文件,以此來達到清空該文件的目的。通過使用cat /dev/null,文件大小為0字節。
用cat刪除文件:
但是我發現對于nohup的程序的日志,這樣是無效的。因為nohup的程序持續不斷地在讀寫日志文件,此時無法重定向,我試了幾次,日志文件都壓根沒動。
crontab用于設置定時任務
參考:? linux crontab定時執行shell腳本
crontab命令被用來提交和管理用戶的需要周期性執行的任務,與windows下的計劃任務類似,當安裝完成操作系統后,默認會安裝此服務工具,并且會自動啟動crond進程,crond進程每分鐘會定期檢查是否有要執行的任務,如果有要執行的任務,則自動執行該任務。
語法
crontab(選項)(參數)
選項
-e:編輯該用戶的計時器設置;
-l:列出該用戶的計時器設置;
-r:刪除該用戶的計時器設置;
-u用戶名稱:指定要設定計時器的用戶名稱。
參數
crontab文件:指定包含待執行任務的crontab文件。
首先crontab -e,就會進入vi編輯界面。然后直接把新的命令輸進去就行了。
minute hour day month week command /XXX/XXX.log 順序:分 時 日 月 周
minute: 表示分鐘,可以是從0到59之間的任何整數。
hour:表示小時,可以是從0到23之間的任何整數。
day:表示日期,可以是從1到31之間的任何整數。
month:表示月份,可以是從1到12之間的任何整數。
week:表示星期幾,可以是從0到7之間的任何整數,這里的0或7代表星期日。
/n表示每個n的單位執行一次
command:要執行的命令,可以是系統命令,也可以是自己編寫的腳本文件。
意為每周的1:00執行,且輸出重定向到黑洞目錄。
查看某個目錄的文件大小并排序 (單位為MB)
清空 /var/log/journal 文件的方法
1、用echo命令,將空字符串內容重定向到指定文件中
echo "" system.journal
2、journalctl 命令自動維護文件大小
1)只保留近一周的日志
journalctl --vacuum-time=1w
2)只保留500MB的日志
journalctl --vacuum-size=500M
3)直接刪除 /var/log/journal/ 目錄下的日志文件
rm -rf /var/log/journal/f9d400c5e1e8c3a8209e990d887d4ac1
問題與分析解決
執行 journalctl時報錯:Error was encountered while opening journal files: Input/output error
問題分析:日志文件損壞
解決方法:刪除之前的日志,并重啟 journalctl 服務
然后,再執行 journalctl 限制日志的命令: