O que significa `line 19: 12364 Killed` na mensagem de erro do crontab?

10

Eu tenho uma tarefa diária de crontab:

50 1 * * * sh /my_path/daily_task.sh > /tmp/zen_log 2>&1

Esse script shell daily_task executará alguns scripts python e produzirá um arquivo de dados.

E falha por duas noites. Mas quando cheguei de manhã, execute os scripts python manualmente, obtive o arquivo de dados. Ou eu defino um novo crontab que apenas define a data 0 10 * * *e esse crontab também é bem-sucedido.

Então, ontem, eu coloquei > /tmp/zen_log 2>&1na tarefa cron para receber alguma mensagem de erro.

E nesta manhã, recebi esta mensagem de erro no zen_log:

/my_path/daily_task.sh: line 19: 12364 Killed /usr/local/bin/python2.7 my_python_script.py 2 mix > mix_hc_$datestamp 2>&1

Parece que algum processo foi morto? Mas o que exatamente isso line 19: 12364 Killedsignifica?


PS:

Hoje, um minuto atrás, quando eu executo manualmente o script python, obtive: /usr/local/bin/python2.7 my_python_script.py 2 mix > mix_hc_$datestamp 2>&1 Killed

zen
fonte
O que há line 19no script? Talvez a publicação do seu script nos ajude a fornecer uma resposta.
devnull
line 19é/usr/local/bin/python2.7 my_python_script.py 2 mix > mix_hc_$datestamp 2>&1
Zen
Você pode atualizar sua pergunta com o conteúdo de daily_task.sh? É difícil entender por que ele falha, 1:50 ammas consegue 10 amobter as informações até o momento.
devnull
3
Além disso, verifique o conteúdo de /var/log/messagesGostaria de saber se o seu script está criando um erro de falta de memória (OOM) e está sendo morto. Seu sistema tende a executar outros scripts / aplicativos / tarefas com fome de recursos do sistema durante a madrugada em comparação com as horas da manhã?
devnull
@ DevNull, verifiquei o log do kernel, agora tenho certeza que esse script ocupou muita memória e o kernel o matou.
Zen

Respostas:

17

Muitas vezes, quando os aplicativos estão sendo usados killed, é sempre uma boa idéia dar uma olhada rápida no seu /var/log/messagesarquivo para ver se o kernel está matando o processo. O gatilho mais comum (na minha experiência) sempre foi devido a erros de falta de memória (OOM), já que minha empresa usa principalmente aplicativos java, é bastante comum que os desenvolvedores publiquem uma atualização de código incorreta que aciona um evento OOM .

O agendamento de tarefas quando o seu sistema operacional tem os recursos mais disponíveis é provavelmente o motivo pelo qual ele está tendo êxito nos horários AM e não no PM quando a maioria das pessoas gosta de agendar tarefas de tributação do sistema. As soluções simples para isso são aumentar os recursos do sistema, restringir os recursos alocados ao seu código ou mudar quando os trabalhos são agendados, para que não entrem em conflito.

devnull
fonte
1
Nota apenas extra que pela saída ubuntu padrão messagesem syslog em vez de/var/log/messages
carvalho