Linux で nohup ログ出力が大きすぎる問題の解決方法の詳細な説明

Linux で nohup ログ出力が大きすぎる問題の解決方法の詳細な説明

最近、hadoop テスト クラスターで spark ストリーミング プログラムを実行し、その後、nohup ./execute.sh & を使用してプログラムをバックグラウンドで実行しました。わずか数日で、ログ ファイルが G を超えました。問題が発生してログ ファイルを表示したい場合、ファイルを開くのは明らかに面倒なことですので、次の方法でファイル サイズを縮小しようとしました。

1. nohupコマンドの説明:

a. 構文: nohup [コマンド] [引数] [&]

b. 説明: nohup コマンドは、Command パラメータと関連する Arg パラメータで指定されたコマンドを実行し、すべてのハングアップ信号を無視します。ログアウト後にプログラムをバックグラウンドで実行するには、nohup コマンドを使用します。 nohup コマンドをバックグラウンドで実行するには、コマンドの末尾に & (「and」の記号) を追加します。リダイレクトを指定しない場合、ログはデフォルトで現在のディレクトリの nohup.out ファイルに出力されます。

一般的には次のように送信します: nohup ./execute.sh & ログまたは出力が現在実行中のディレクトリにあるようにします。nohup.out

リダイレクト: nohup ./execute.sh > /home/xxx/log.log 2>&1 & : この方法では、ログは指定されたディレクトリにリダイレクトされます。

2. nohup.outを分割して無制限に大きくなるのを防ぐ

ここで使用する一般的な送信コマンドは、nohup ./execute.sh & です。これにより、現在のディレクトリに nohup.out ファイルが作成されます。この時点で、nohup.out を定期的に複数の小さなファイルに分割する方法を見つけることができますが、同時に nohup.out が無制限に大きくならないようにしてください (通常、プログラムを中断することはできません)。

a. 毎日(必要に応じて時間を設定)、前日のログを定期的に分割します(たとえば、1日あたり約1gの場合、1回あたり約100mに分割できます)。

b. 分割後、新しい出力ログが引き続きnohup.outに出力されるように、nohup.outファイルが保存されます。

上記はシェル内

current_date=`日付 -d "-1 日" "+%Y%m%d"`

split -b 65535000 -d -a 4 nohup.out ./log/log_${current_date}_ ここで、split コマンドは、nouhup ファイルを指定されたサイズ (65535000b は約 60 MB で、サイズはカスタマイズできます) に従って分割し、指定された形式 (0000 から始まる 4 桁のサフィックスを持つ -d -a 4、詳細については、Baidu の split コマンドの使用方法を参照してください) に分割するために使用され、最終的な出力形式は log_20160610_0001 です。

cat /dev/null > nohup.out (このコマンドはnohup.outファイルを即座にクリアし、後でファイルに書き込みを続けます)、ログを/dev/nullに送信します。

リダイレクトされた出力を使用しても同じことができますが、代わりにリダイレクトされたファイル名が使用されます。

これらのコマンドをシェル ファイルで定義し、毎日定期的に実行します。こうすることで、毎日のログが複数の部分に分割され、トラブルシューティングやログ バックログが大きすぎる場合に便利です。履歴ログを定期的に削除し、過去数日分のログのみを保持することができます。

全体的なコードは次のとおりです。

this_path=$(cd `dirname $0`;pwd)
 
$this_path を cd
$this_path をエコーする
current_date=`日付 -d "-1 日" "+%Y%m%d"`
$current_date をエコーする
分割 -b 65535000 -d -a 4 /home/.../nohup.out /home/.../log/log_${current_date}_
 
cat /dev/null > nohup.out

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Linux nohup はプログラムをバックグラウンドで実行し、表示します (nohup と &)
  • Python Nohup Linux バックグラウンド実行出力の問題を解決する
  • PHP デーモン プロセスと Linux コマンド nohup を組み合わせて、1 秒に 1 回のタスク実行を実装します。
  • Linux のバックグラウンドで & と nohup を使用する方法
  • Linux nohup と tail-f の使い方
  • Linux での Nohup とバックグラウンド実行プロセスの表示と終了

<<:  画像のシームレスなスクロールを実現する JavaScript タイマー

>>:  Mysql は非集計列を選択できません

推薦する

ノードを使用して静的ファイルキャッシュを実装する方法

目次キャッシュキャッシュ位置の分類キャッシュ設定ヘッダーNodeは静的ファイルキャッシュを実装する強...

Windows 8 での ssh コマンドの使用記録

1. 仮想マシンとgit bashウィンドウを開き、接続の準備をします2. 仮想マシンでifconf...

Innodb で MySQL の 2T テーブルをすばやく削除する方法の例

序文この記事は主に、MySQL の Innodb で 2T の大きなテーブルをすばやく削除する方法に...

W3C チュートリアル (13): W3C WSDL アクティビティ

Web サービスは、アプリケーション間の通信に関係します。 WSDL は、XML ベースの Web ...

OCSP を有効にすると、https 証明書の検証効率が向上し、Let's Encrypt SSL 証明書へのアクセスが遅くなる問題が解決されます。

ここ数日、ウェブサイトを初めて開いたときにアクセスが非常に遅いのですが、その後はページが正常に開きま...

Vueフィルターの詳細な説明

<本文> <div id="ルート"> <h2&...

MySQL で MHA アーキテクチャのデプロイメントを構築する手順

目次マハ1. MAHアーキテクチャの概要2. 適用可能なシナリオ3. MHAの動作原理4. MHAの...

Windows 10 システムに mysql-8.0.13 (zip インストール) をインストールする詳細なチュートリアル

インストール環境の説明•システムバージョン: windows10 •MySQL バージョン: mys...

MySQL で中国語を入力するときに発生するエラー 1366 の解決方法

MySQL で中国語を入力すると、次のエラーが発生します。エラー 1366: 1366: 行 1 の...

CSS でホバー ドロップダウン メニューを実装する方法

いつものように、今日は非常に実用的な CSS 効果についてお話します。マウスがボタンに移動すると、ド...

PostgreSQL正規表現の一般的な機能の概要

PostgreSQL正規表現の一般的な機能の概要正規表現は、複雑なデータ処理を必要とするプログラムに...

CSS3のボックスサイズプロパティの興味深いボックスモデルについての簡単な説明

誰もがボックス モデルの構成を、内側から外側まで、コンテンツ、パディング、境界線、マージンについて知...

CSS における zoom:1 属性の定義と機能

今日、CSS の zoom 属性は何のために使用されるのかと尋ねられました。この属性は、フローティン...

MySQL のインデックスと制約の例文

外部キーテーブルの主キーがどのテーブルの外部キーであるかを照会する 選択 テーブル名、 列名、 制約...

HTML から PDF への変換事例の概要 (複数の画像を推奨)

仕事の都合上、最近 HTML を PDF に変換する機能について調べることに時間を費やしました。 H...