Job a commencé de cron a été tué

0

J'ai démarré un processus Java à partir d'un travail cron à l'aide de cette commande

Ceci est mon entrée cron

* * * * * sh /tmp/runScript.sh

RunScript.sh a pour but d'appliquer une logique et de démarrer un processus java.

./runJavaProcess.sh >> java_process.out 2>&1

Le travail est tué automatiquement sans aucune entrée dans java_process.out ou dans les journaux Java. Je ne peux rien voir dans le kern.log ou / var / log / messages ou / var / log / messages liée à la façon dont le processus a été tué.

Je peux voir que le processus commence bien, mais au bout de quelques minutes / heures, il est tué sans aucune trace de pourquoi ni comment il a été tué. Existe-t-il un moyen de savoir pourquoi le processus a été tué?

J'utilise la version 7.3.1611 (Core) de CentOS Linux.

gap_j
la source
Bienvenue à bord. Vous pourriez obtenir plus de réponse sur unix.stackexchange.com
Mawg
Cela ressemble à la Tueur Linux de MOO au travail, mais celui-ci vide les notifications dans / var / log / messages autant que je sache.
mvw
Pouvez-vous aussi essayer dmesg -T | grep -i "killed process"?
mvw
Rien dans dmesg -T | grep -i "processus tué". Est-ce que cela n’est pas écrit dans / var / log / messages?
gap_j
Bizarre. Pouvez-vous écrire un programme de test Java qui alloue de la mémoire jusqu'à sa mort et l'utiliser? Juste pour vérifier si cela déclenchera le tueur de MOO. Ensuite, vous pouvez ajouter une sortie sur votre code ("Je suis en A", "Je suis en B", "Je suis en C", ..) pour localiser où il meurt et s’il existe un motif. S'il n'y a pas d'influence externe, cela laisse des failles dans le programme, des bugs dans le JVM, un mauvais matériel de mémoire .. Difficile à dire à partir d'ici.
mvw

Réponses:

1

Cette java_process.out peut exister dans votre répertoire personnel, c.-à-d. ~/java_process.out. Votre script n'a que le nom du fichier et cron s'exécutera dans votre répertoire personnel. Ajouter le chemin pourrait aider.

mvw
la source
Le nom de fichier est indicatif, j'ai effectivement utilisé le chemin complet sur mon système. rien dans le journal
gap_j
0
  1. Tu devrais vérifier /var/log/cron, ne pas /var/log/messages pour avoir un aperçu de ce qui s'est passé.
  2. Je vous suggère de modifier votre entrée crontab comme ci-dessous afin d'obtenir le résultat de ce qui se passe lors de l'exécution.

    * * * * * sh /tmp/runScript.sh 2>&1 /tmp/insight.log
    
  3. Il est possible que votre runJavaProcess.sh script a besoin de certaines variables d'environnement pour s'exécuter, et à moins que vous ne les utilisiez dans la ligne crontab (ou dans vos scripts) comme ci-dessous, il ne les trouvera pas:

    * * * * *  . $HOME/.bash_profile; sh /tmp/runScript.sh 2>&1 /tmp/insight.log
    
AnythingIsFine
la source
Vérifié / var / log / cron également, il montre que le fichier /tmp/runScript.sh a été exécuté, mais rien n’est dit sur le processus en train de mourir
gap_j
OK, votre travail est mort et le fichier .out ne contient aucune sortie. Êtes-vous sûr que votre travail décède prématurément? Pouvez-vous sortir quelque chose? Vous pouvez ajouter des résultats de test au début de votre travail.
mvw
Rien dans les journaux d'application ne montre un problème. Aucune hausse dans aucune autre métrique système remarquée non plus.
gap_j
0

J'ai trouvé la cause racine. Il y avait une erreur de segmentation dans le processus java. Le journal des erreurs a été créé dans le répertoire / root /.

# 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
gap_j
la source