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

So konfigurieren Sie NAS unter Windows Server 2019

Vorwort Dieses Tutorial installiert die neuste Ve...

Einige Tipps zur richtigen Verwendung des HTML-Titelattributs

Wenn Sie Inhalte vor Benutzern von Telefonen, Tabl...

Warum MySQL die Verwendung von Unterabfragen und Verknüpfungen nicht empfiehlt

So führen Sie eine paginierte Abfrage durch: 1. F...

CSS-Leistungsoptimierung - detaillierte Erklärung der Will-Change-Verwendung

will-change teilt dem Browser mit, welche Änderun...

Ubuntu startet den Remote-Anmeldevorgang des SSH-Dienstes

SSH-Secure-Shell, ermöglicht sichere Remote-Anmel...

Tomcat8 verwendet Cronolog zum Aufteilen von Catalina.Out-Protokollen

Hintergrund Wenn die von Tomcat generierte catali...

25 Beispiele für die Verwendung kreisförmiger Elemente im Webdesign

Heute listet dieser Beitrag einige großartige Beis...

Teilen Sie JS vier lustige Hacker-Hintergrundeffektcodes

Inhaltsverzeichnis Beispiel 1 Beispiel 2 Beispiel...

Verwendung des Linux-Befehls ln

1. Befehlseinführung Mit dem Befehl ln werden Lin...

Detaillierte Erklärung des Flex-Layouts in CSS

Flex-Layout wird auch elastisches Layout genannt....