Para ter uma ideia de por que seu processo morre, faça com que o processo pai imprima o status de saída . O status de saída indica se o programa é devido a um sinal e inclui um código de saída de 8 bits do processo. O código de saída de 8 bits é convencionalmente 0 para sucesso e 1..125 para indicar um erro.
Em um programa C / Perl /…, você pode consultar todo o status de saída. Consulte a documentação da biblioteca do seu idioma. De um script de shell, o status de saída incluindo a informação do sinal é empacotado em um único valor de 8 bits, com os sinais sendo reportados como valores 128+ n onde n é o sinal número.
#!/bin/sh
myprogram
ret=$?
if [ $ret -eq 0 ]; then
echo "The program exited normally";;
elif [ $ret -gt 128 ]; then
echo "The program died of signal $((ret-128)): $(kill -l $ret)"
else
echo "The program failed with status $ret"
fi
Se o Linux matar seu programa porque o sistema ficou sem memória, isso é registrado nos logs do sistema, especificamente nos logs do kernel, que podem ser exibidos com o comando dmesg
e que são normalmente gravados em um arquivo em /var/log
(não sei qual nome de arquivo a distribuição da Amazon usa).
Não AssUMe que seu processo ficou sem memória e foi morto por causa disso. Verifique o que aconteceu. A explicação mais plausível é que o programa tem um bug e caiu.