詳解linux下nohup日誌輸出過大問題解決方案

2022-10-06 06:06:10 字數 1598 閱讀 8371

最近在一hadoop測試集群執行乙個spark streaming程式,然後使用nohup ./execute.sh & 執行讓程式後台執行,才幾天日誌就上g了,如果有問題想要檢視日誌,顯然開啟檔案是一件很麻煩的事,於是我想辦法通過減小檔案大小:

1、nohup命令解釋:

a、語法:nohup [command] [args] [&]

b、說明:nohup 命令執行由 command 引數和任何相關的 arg 引數指定的命令,忽略所有結束通話訊號。在登出後使用 nohup程式設計客棧 命令執行後台中的程式。要執行後台中的 nohup 命令,新增 & ( 表示「and」的符號)到命令的尾部,如果不指定重定向,則日誌預設輸出到當前目錄下nohup.out檔案中,

一般提交如 :nohup ./execute.sh &  這樣日誌或輸出當前執行目下.nohup.out中

重定向: nohup ./execute.sh >  /home/***/log.log 2>&1 & :這樣日誌會重定向到指定目錄下

2 、切分nohup.out,同時不讓它無限增長

我這裡用的一般提交命令:nohup ./execute.sh &,這樣在當前目錄就有nohup.out檔案了,這時候可以想辦法定時將nohup.out切分成,多個小檔案,但同時又要使nohup.out不會無限增長下去(一般情況下是程式不能中斷的):

a、每天(根據需要設定時間),定時切分前一天的日誌,(比如每天大概1g,那麼可以麼次切分100m左右),

b、切分完後將nohup.out檔案情況,保證新的輸出日誌會不停的繼續輸出到nohup.out

以程式設計客棧上在shell中

current_date=`date -d "-1 day" "+%y%m%d"`

split  -b 65535000 -d -a 4  nohup.ouwww.cppcns.comt  ./log/log_$_   這裡使用split命令,將nouhup檔案按指定大小程式設計客棧切分(65535000b 大概60多m吧,可以自定義大小 ),並分成指定格式(-d -a 4以4位數字形式為字尾以從0000開始,具體可以百度split命令用法),最終輸出格式為log_20160610_0001

cat /dev/null > no程式設計客棧hup.out  (該命令會瞬間清空nohup.out檔案,後續會繼續寫該檔案),將日誌定向到/dev/null中

使用重定向輸出一樣可以這樣,只不過換成重定向的檔名即可

將這些命令定義在乙個shell檔案每天定時執行即可,這樣每天日誌會被分成若干份,排查也方便,而且如果日誌積壓過大的話。可以定時刪除歷史的日誌,保留近幾天即可

整體**如下:

this_path=$(cd `dirname $0`;pwd)

cd $this_path

echo $this_path

current_date=`date -d "-1 day" "+%y%m%d"`

echo $current_date

split -b 65535000 -d -a 4 /home/.../nohup.out /home/.../log/log_$_

cat /dev/null > nohup.out

本文標題: 詳解linux下nohup日誌輸出過大問題解決方案

本文位址:

linux下日誌系統詳解

syslog是一種工業標準的協議,可用來記錄裝置的日誌。在unix系統,路由器 交換機等網路裝置中,系統日誌 system log 記錄系統中任何時間發生的大小事件。管理者可以通過檢視系統記錄,隨時掌握系統狀況。unix的系統日誌是通過syslogd這個程序記錄系統有關事件記錄,也可以記錄應用程式運...

Linux 系統 nohup 命令詳解

nohup nohup 命令執行由 command引數和任何相關的 arg引數指定的命令,忽略所有結束通話 sighup 訊號。在登出後使用 nohup 命令執行後台中的程式。要執行後台中的 nohup 命令,新增 表示 and 的符號 到命令的尾部。nohup 是 no hang up 的縮寫,就...

Linux學習之nohup命令詳解

在實際生產環境中,平時常常因為實際需求,要在後台掛起乙個指令碼或者是程序,如果是掛起程序還可以使用 xinetd 服務來進行守護程序,但是如果只是需要在後台掛起乙個指令碼的話,使用 xinetd 服務就有點不太合適了,還好 linux系統 中有提供乙個很好的不結束通話地執行命令 nohup 我們使用...