關於Linux中nohup.out日誌過大問題/設定定時任務清空
阿新 • • 發佈:2018-12-14
關於Linux中nohup.out日誌過大問題
在此解決如下:
1,在nohup.out 所在目錄建立一個ClearNohup.sh 指令碼,通過定時任務讓其每週清理一次。防止nohup檔案過大問題。
#!/bin/bash # Author: Ljohn # Last Update: 2018.02.24 # Description: nohup.out 日誌分割 this_path=$(cd `dirname $0`;pwd) #根據指令碼所在路徑 current_date=`date -d "-1 day" "+%Y%m%d"` #列出時間 cd $this_path echo $this_path echo $current_date do_split () { [ ! -d logs ] && mkdir -p logs split -b 10m -d -a 4 ./nohup.out ./logs/nohup-${current_date} #切分10兆每塊至logs檔案中,格式為:nohup-xxxxxxxxxx if [ $? -eq 0 ];then echo "Split is finished!" else echo "Split is Failed!" exit 1 fi } do_del_log() { find ./logs -type f -ctime +7 | xargs rm -rf #清理7天前建立的日誌 cat /dev/null > nohup.out #清空當前目錄的nohup.out檔案 } if do_split ;then do_del_log echo "nohup is split Success" else echo "nohup is split Failure" exit 2 fi # crontab -e 新增定時任務:每週第一天的1點執行一次 #0 1 * * */1 /server/scripts/clearNohup.sh &>/dev/null
2,新增定時任務
crontab -e #新增定時任務:每週第一天的1點執行一次
0 1 * * */1 /server/scripts/clearNohup.sh &>/dev/null
注:
1、nohup命令解釋:
a、語法:nohup [command] [args] [&]
b、說明:nohup 命令執行由 Command 引數和任何相關的 Arg 引數指定的命令,忽略所有結束通話訊號。在登出後使用 nohup 命令執行後臺中的程式。要執行後臺中的 nohup 命令,新增&(表示“and”的符號)到命令的尾部,如果不指定重定向,則日誌預設輸出到當前目錄下nohup.out檔案中,一般提交如 :nohup ./execute.sh & 這樣日誌或輸出當前執行目下.nohup.out中重定向: nohup ./execute.sh > /home/xxx/log.log 2>&1 & :這樣日誌會重定向到指定目錄下
2、split命令可以將一個大檔案分割成很多個小檔案,有時需要將檔案分割成更小的片段,比如為提高可讀性,生成日誌等。
選項
-b:值為每一輸出檔案的大小,單位為 byte。
-C:每一輸出檔中,單行的最大 byte 數。
-d:使用數字作為字尾。同時也可以使用-a length來指定字尾的長度:
-l:值為每一輸出檔的列數大小。