Detaillierte Erklärung der Lösung für das Problem, dass die Nohup-Protokollausgabe unter Linux zu groß ist

Detaillierte Erklärung der Lösung für das Problem, dass die Nohup-Protokollausgabe unter Linux zu groß ist

Kürzlich habe ich ein Spark-Streaming-Programm in einem Hadoop-Testcluster ausgeführt und dann nohup ./execute.sh & verwendet, um das Programm im Hintergrund auszuführen. Nach nur wenigen Tagen war die Protokolldatei größer als G. Wenn ein Problem auftritt und ich die Protokolldatei anzeigen möchte, ist das Öffnen der Datei offensichtlich mühsam, daher habe ich versucht, die Dateigröße wie folgt zu reduzieren:

1. Erklärung des Nohup-Befehls:

a. Syntax: nohup [Befehl] [Argumente] [&]

b. Beschreibung: Der Befehl „nohup“ führt den durch den Parameter „Command“ und alle zugehörigen Arg-Parameter angegebenen Befehl aus und ignoriert dabei alle Auflegesignale. Verwenden Sie den Befehl nohup, um das Programm nach der Abmeldung im Hintergrund auszuführen. Um den Befehl nohup im Hintergrund auszuführen, fügen Sie am Ende des Befehls & (das Symbol für „und“) hinzu. Wenn Sie keine Umleitung angeben, wird das Protokoll standardmäßig in die Datei nohup.out im aktuellen Verzeichnis ausgegeben.

Senden Sie es im Allgemeinen so: nohup ./execute.sh &, sodass sich das Protokoll oder die Ausgabe im aktuell ausgeführten Verzeichnis befindet.nohup.out

Umleitung: nohup ./execute.sh > /home/xxx/log.log 2>&1 & : Auf diese Weise wird das Protokoll in das angegebene Verzeichnis umgeleitet

2. Teilen Sie nohup.out auf und verhindern Sie, dass es unbegrenzt wächst

Der allgemeine Übermittlungsbefehl, den ich hier verwende, lautet: nohup ./execute.sh &, sodass im aktuellen Verzeichnis eine nohup.out-Datei vorhanden ist. Zu diesem Zeitpunkt können Sie eine Möglichkeit finden, nohup.out regelmäßig in mehrere kleine Dateien aufzuteilen, aber gleichzeitig sicherzustellen, dass nohup.out nicht unbegrenzt wächst (im Allgemeinen kann das Programm nicht unterbrochen werden):

a. Teilen Sie jeden Tag (stellen Sie die Zeit nach Bedarf ein) das Protokoll des Vortages regelmäßig auf (wenn es beispielsweise etwa 1 g pro Tag sind, können Sie es jedes Mal in etwa 100 m aufteilen).

b. Nach dem Aufteilen wird die Datei nohup.out gespeichert, um sicherzustellen, dass das neue Ausgabeprotokoll weiterhin in nohup.out ausgegeben wird

Das Obige in der Schale

current_date=`Datum -d "-1 Tag" "+%Y%m%d"`

split -b 65535000 -d -a 4 nohup.out ./log/log_${current_date}_ Der Befehl split wird hier verwendet, um die nouhup-Datei entsprechend der angegebenen Größe aufzuteilen (65535000b sind etwa 60 MB, die Größe kann angepasst werden) und in das angegebene Format aufzuteilen (-d -a 4 mit einem 4-stelligen Suffix, beginnend bei 0000, für Details können Sie den Befehl split von Baidu verwenden), das endgültige Ausgabeformat ist log_20160610_0001

cat /dev/null > nohup.out (Dieser Befehl löscht sofort die Datei nohup.out und schreibt später weiter in die Datei) und leitet das Protokoll an /dev/null weiter.

Dasselbe kann mit umgeleiteter Ausgabe erreicht werden, außer dass stattdessen der umgeleitete Dateiname verwendet wird.

Definieren Sie diese Befehle in einer Shell-Datei und führen Sie sie regelmäßig jeden Tag aus. Auf diese Weise werden die täglichen Protokolle in mehrere Teile aufgeteilt, was bei der Fehlerbehebung und bei zu großem Protokollrückstand praktisch ist. Sie können historische Protokolle regelmäßig löschen und nur die letzten paar Tage behalten.

Der Gesamtcode lautet wie folgt:

dieser_Pfad=$(cd `dirname $0`;pwd)
 
cd $diesen_Pfad
echo $diesen_Pfad
current_date=`Datum -d "-1 Tag" "+%Y%m%d"`
echo $aktuelles_datum
split -b 65535000 -d -a 4 /home/.../nohup.out /home/.../log/log_${current_date}_
 
cat /dev/null > nohup.out

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird.

Das könnte Sie auch interessieren:
  • Linux nohup, um Programme im Hintergrund auszuführen und anzuzeigen (nohup und &)
  • Lösen Sie das Problem der im Hintergrund laufenden Python-Nohup-Linux-Ausgabe
  • PHP-Daemon-Prozess plus Linux-Befehl nohup zur Implementierung der Aufgabenausführung einmal pro Sekunde
  • So verwenden Sie & und nohup im Hintergrund von Linux
  • Verwendung von nohup und tail-f unter Linux
  • Nohup und Anzeigen und Beenden von im Hintergrund laufenden Prozessen unter Linux

<<:  JavaScript-Timer zum nahtlosen Scrollen von Bildern

>>:  Mysql kann keine nicht aggregierten Spalten auswählen

Artikel empfehlen

Fallstudie zu JavaScript-Ereignisschleifen

Ereignisschleife in js Da JavaScript ein Single-T...

Lösung für die hohe CPU-Auslastung des Tomcat-Prozesses

Inhaltsverzeichnis Fall Kontextwechsel-Overhead? ...

Die Reihenfolge der Ereignisausführung in der Knotenereignisschleife

Inhaltsverzeichnis Ereignisschleife Ereignisschle...

So führen Sie den Top-Befehl im Batchmodus aus

Der Befehl „top“ ist der beste Befehl, den jeder ...

So verwenden Sie cc.follow zur Kameraverfolgung in CocosCreator

Cocos Creator-Version: 2.3.4 Demo-Download: https...

Implementierung der Leistungsoptimierung des Element-Shuttle-Frames

Inhaltsverzeichnis Hintergrund Lösung Neue Fragen...

Lernen Sie, wie Sie Uniapps und Miniprogramme (Bilder und Text) untervergeben

Inhaltsverzeichnis 1. Subunternehmer für Miniprog...

Verwenden Sie Standard-DL-, DT- und DD-Tags, um Tabellenlisten zu verwerfen

Heutzutage beginnen immer mehr Front-End-Entwickle...

MySql Installer 8.0.18 Visuelles Installationstutorial mit Bildern und Text

Inhaltsverzeichnis 1. MySQL 8.0.18 installieren 2...

So zeichnen Sie die Zeitleiste mit Vue+Canvas

In diesem Artikelbeispiel wird der spezifische Co...

Interner Ereignisrückruf der Webkomponentenkomponente und Problempunktanalyse

Inhaltsverzeichnis Vorne geschrieben Was genau is...