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.
dmesg -T | grep -i "killed process"
?Réponses:
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 etcron
s'exécutera dans votre répertoire personnel. Ajouter le chemin pourrait aider.la source
/var/log/cron
, ne pas/var/log/messages
pour avoir un aperçu de ce qui s'est passé.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.
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:la source
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 /.
la source