Ubuntu: como o cron executa tarefas?

3

Estou tendo dificuldades em encontrar uma resposta para essa pergunta no google:

Com que exatidão o CRON em ubuntu executa trabalhos?

Isso gera cada novo trabalho em seu próprio processo?

Digamos que eu tenha dois trabalhos agendados:

@reboot /some/really/slow/job
* * * * * /some/quick/job

Esses trabalhos serão executados lado a lado ou o primeiro bloqueará o segundo até que seja concluído?

Em segundo lugar, o Cron afeta os redirecionamentos? Digamos que eu tenha um script que contenha algo como

rsync --verbose /from /to &>>rsynclog.log

O arquivo de log será gravado quando chamado do CRON? Ou acaba em outro lugar?

    
por Martin Nielsen 09.05.2013 / 11:40

1 resposta

4

Esta resposta é para o Ubuntu. Outros sistemas operacionais linux / unix podem variar levemente.

A cada minuto, o daemon cron lê todos os arquivos crontab e os carrega na memória. Para cada entrada de cron que deve ser executada (determinada pelos campos crontab time) cron bifurca uma cópia de si mesmo.

O processo filho do cronômetro bifurcado, em seguida, executa um novo shell (geralmente / bin / sh, mas isso pode ser substituído) para executar o comando crontab. O próprio cron apenas bifurca os processos filhos que gerenciam as tarefas. Portanto, as entradas do cron são executadas simultaneamente - se uma tarefa levar uma hora, por exemplo, ela não terá impacto na execução de quaisquer outras tarefas agendadas.

Redirecionamento deve funcionar normalmente e o arquivo de saída será gravado no diretório $ HOME do usuário que possui o crontab. Em alguns casos, vale a pena fornecer o caminho completo para comandos e arquivos redirecionados para evitar problemas com as configurações PATH e HOME.

    
por 09.05.2013 / 13:24