Como posso ver a saída de uma tarefa crontab em execução no OpenBSD?

5

Eu tenho uma tarefa crontab de uma hora que funciona com uma saída mtr ( traceroute ) a cada 10 minutos (isso vai passar mais de uma hora antes de ser enviada de volta para mim), e eu quero para ver o progresso atual até agora.

No Linux, isso pode ser feito por acessando o fd aberto do arquivo temporário no qual os resultados do script são salvos .

Como posso fazer isso no OpenBSD?

Eu tentei fazer fstat | fgrep -e USER -e cron -e mtr , mas não consegui encontrar nenhum arquivo temporário.

    
por cnst 19.01.2013 / 08:37

2 respostas

1

Eu investiguei a origem de como o cron lida com o envio da saída de seus trabalhos:

  • cron(8) configura stdout e stderr da tarefa em execução e canaliza diretamente para mail(1) , não deixando nenhum arquivo temporário. Procure em do_command.c na linha 411 ( 1 ).
  • mail(1) precisa estar totalmente pronto, já que precisa dos cabeçalhos. Ele abre um arquivo temporário (geralmente /tmp/mail-R… ), mas o remove imediatamente, para não deixar vestígios. Loøk em collect.c na linha 83 ( 2 ).

Em qualquer caso, parece haver esforço deliberado não para deixar um arquivo temporário interceptável por aí. Se você precisar (ou quiser) interceptar o que está acontecendo em um cronjob de longa duração, você mesmo precisará configurar um arquivo temporário.

A minha sugestão neste momento é, p. Adicione tee $HOME/cronjob.out ao seu cronjob, que captura uma cópia da saída do seu trabalho em um local seguro.

    
por 25.10.2014 / 01:38
0

Você tem que interceptar a saída (ou descobrir onde o arquivo temporário está). Não sei como fazer isso em * BSD, desculpe. Mas considere que, a menos que o arquivo esteja sem buffer, você verá a saída toda vez que ele preenche um buffer (prbably em torno de 4 KiB), o que pode levar algum tempo. É muito caro apenas fazer o comando manualmente se você quiser dar uma olhada no status atual?

    
por 21.01.2013 / 05:44

Tags