cron から開始されたジョブが強制終了されました

cron から開始されたジョブが強制終了されました

このコマンドを使用してcronジョブからJavaプロセスを開始しました

これは私のcronエントリです

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

runScript.sh の目的は、何らかのロジックを適用し、Java プロセスを開始することです。

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

ジョブは自動的に終了し、java_process.outやJavaログにエントリは残っていません。kern.logまたは/var/log/メッセージまたは/var/log/メッセージプロセスが強制終了された方法に関連します。

プロセスは正常に開始されていることがわかりますが、数分/数時間後に、なぜ、どのように終了したのかの痕跡もなくプロセスが終了しています。プロセスが終了された理由を調べる方法はありますか。

CentOS Linux リリース 7.3.1611 (Core) を実行しています。

答え1

それはjava_process.outホーム ディレクトリに存在する可能性があります~/java_process.out。つまり、スクリプトにはファイル名のみがあり、cronホーム ディレクトリで実行されます。パスを追加すると役立つ場合があります。

答え2

  1. 何が起こったのかを知るために/var/log/cron、を確認する必要があります。/var/log/messages
  2. 実行時に何が起こっているかの出力を取得するには、crontab エントリを以下のように編集することをお勧めします。

    * * * * * sh /tmp/runScript.sh 2>&1 /tmp/insight.log
    
  3. スクリプトを実行するには環境変数が必要になる可能性がありますrunJavaProcess.shが、以下のように crontab 行 (またはスクリプト内) でそれらをソースしない限り、スクリプトはそれらを見つけることができません。

    * * * * *  . $HOME/.bash_profile; sh /tmp/runScript.sh 2>&1 /tmp/insight.log
    

答え3

根本的な原因が見つかりました。Java プロセスでセグメンテーション違反が発生していました。エラー ログは /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

関連情報