Job iniciado pelo cron foi morto

0

Eu iniciei um processo java a partir de um trabalho cron usando este comando

Esta é a minha entrada no cron

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

O objetivo do runScript.sh é aplicar alguma lógica e iniciar um processo Java.

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

O job é eliminado automaticamente sem entrada no java_process.out ou nos logs java. Não consigo ver nada no kern.log ou / var / log / messages ou / var / log / messages relacionado a como processo foi morto.

Eu posso ver que o processo está começando bem, mas depois de alguns minutos / horas ele está sendo morto sem qualquer vestígio do porquê ou como ele foi morto. Existe alguma maneira de descobrir o motivo pelo qual o processo foi morto?

Estou rodando o CentOS Linux versão 7.3.1611 (Core).

    
por gap_j 05.01.2018 / 09:28

3 respostas

0

Eu encontrei a causa raiz. Houve uma falha de segmentação no processo java. O log de erros foi criado no diretório / 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
    
por 09.01.2018 / 13:33
1

Esse java_process.out pode existir em seu diretório inicial, por exemplo, ~/java_process.out . Seu script tem apenas o nome do arquivo e cron será executado em seu diretório pessoal. Adicionar o caminho pode ajudar.

    
por 05.01.2018 / 10:11
0
  1. Você deve verificar /var/log/cron , não /var/log/messages para ter uma ideia do que aconteceu.
  2. Eu sugiro que você edite sua entrada no crontab como abaixo para obter a saída do que está acontecendo na execução.

    * * * * * sh /tmp/runScript.sh 2>&1 /tmp/insight.log
    
  3. É possível que o seu script runJavaProcess.sh precise de algumas variáveis de ambiente para serem executadas e, a menos que você as forneça na linha do crontab (ou em seus scripts) como abaixo, elas não serão encontradas:

    * * * * *  . $HOME/.bash_profile; sh /tmp/runScript.sh 2>&1 /tmp/insight.log
    
por 05.01.2018 / 12:40