Ich habe einen Java-Prozess von einem Cron-Job aus mit diesem Befehl gestartet
Dies ist mein Cron-Eintrag
* * * * * sh /tmp/runScript.sh
Der Zweck von runScript.sh besteht darin, eine Logik anzuwenden und einen Java-Prozess zu starten.
./runJavaProcess.sh >> java_process.out 2>&1
Der Job wird automatisch beendet, ohne dass ein Eintrag in java_process.out oder in den Java-Protokollen erfolgt. Ich kann nichts in derkern.logoder/var/log/Nachrichtenoder/var/log/Nachrichtenim Zusammenhang damit, wie der Prozess beendet wurde.
Ich sehe, dass der Prozess einwandfrei startet, aber nach ein paar Minuten/Stunden wird er beendet, ohne dass es Hinweise darauf gibt, warum oder wie er beendet wurde. Gibt es eine Möglichkeit, den Grund für die Beendigung des Prozesses herauszufinden?
Ich verwende CentOS Linux Version 7.3.1611 (Core).
Antwort1
Das java_process.out
könnte in Ihrem Home-Verzeichnis vorhanden sein, d. h ~/java_process.out
. Ihr Skript hat nur den Dateinamen und cron
wird in Ihrem Home-Verzeichnis ausgeführt. Das Hinzufügen des Pfads könnte hilfreich sein.
Antwort2
- Sie sollten nachsehen
/var/log/cron
,/var/log/messages
um einen Einblick in das Geschehene zu erhalten. Ich schlage vor, dass Sie Ihren Crontab-Eintrag wie unten beschrieben bearbeiten, um die Ausgabe dessen zu erhalten, was bei der Ausführung passiert.
* * * * * sh /tmp/runScript.sh 2>&1 /tmp/insight.log
Möglicherweise
runJavaProcess.sh
benötigt Ihr Skript zur Ausführung einige Umgebungsvariablen. Wenn Sie diese nicht wie unten beschrieben in der Crontab-Zeile (oder in Ihren Skripten) angeben, werden sie nicht gefunden:* * * * * . $HOME/.bash_profile; sh /tmp/runScript.sh 2>&1 /tmp/insight.log
Antwort3
Ich habe die Grundursache gefunden. Es gab einen Segmentierungsfehler im Java-Prozess. Das Fehlerprotokoll wurde im Verzeichnis /root/ erstellt.
# A fatal error has been detected by the Java Runtime Environment:
#
# SIGSEGV (0xb) at pc=0x00007f11f1b980e5, pid=22395, tid=0x00007f11b39be700
#
# JRE version: Java(TM) SE Runtime Environment (8.0_112-b15) (build 1.8.0_112-b15)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (25.112-b15 mixed mode linux-amd64 compressed oops)
# Problematic frame:
# J 8563 C2 java.nio.DirectByteBuffer.getLong(I)J (16 bytes) @ 0x00007f11f1b980e5 [0x00007f11f1b980a0+0x45]
#
# Failed to write core dump. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again
#
# If you would like to submit a bug report, please visit:
# http://bugreport.java.com/bugreport/crash.jsp
#
--------------- T H R E A D ---------------
Current thread (0x00007f12023f72a0): JavaThread "BatchlogTasks:1" daemon [_thread_in_Java, id=23777, stack(0x00007f11b397e000,0x00007f11b39bf000)]
siginfo: si_signo: 11 (SIGSEGV), si_code: 1 (SEGV_MAPERR), si_addr: 0x000000000fd68aae