1. 程式人生 > >關於Linux中nohup.out日誌過大問題/設定定時任務清空

關於Linux中nohup.out日誌過大問題/設定定時任務清空

關於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:值為每一輸出檔的列數大小。