Você pode exceder alguns limites definidos por padrão ou em /etc/security/limits.conf
. Você pode querer executar o comando ulimit -a
como um cronjob. Isso deve mostrar os limites que você está recebendo no cron.
É possível que o trabalho esteja sendo morto por um programa de monitoramento de terminal inativo ou matador de processo fugitivo. Há um grande número desses programas, a maioria dos quais pode ser programada para ignorar processos conhecidos de longa duração.
Editar: os valores padrão têm limites que podem ser excedidos. Estes são os limites que obtenho por padrão:
:~$ ulimit -a | grep -v unlim
core file size (blocks, -c) 0
scheduling priority (-e) 0
pending signals (-i) 61167
max locked memory (kbytes, -l) 64
open files (-n) 1024
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192
max user processes (-u) 61167
Destes open files
e stack size
são os dois que eu esperaria que fossem mais provavelmente excedidos. Arquivos abertos podem ser monitorados contando as entradas em / proc / XXX / fd, onde XXX é o id do processo do seu script. Não tenho conhecimento de nenhuma maneira fácil de monitorar o tamanho da pilha. Executar o programa a partir de um script que aumenta o limite de tamanho da pilha pode ajudar a determinar se esse é o problema.
Eu também verificaria todos os logs escritos no momento em que o programa é finalizado para ver se há algo registrado. Se você pode modificar o programa para ser mais detalhado ao sair.