Devo editar / etc / crontab ou executar o crontab -e como root?

42

Estou configurando tarefas regulares de manutenção do sistema que precisam ser executadas como root. Eu pretendo usar o sabor do cron que vem com o Ubuntu 14.04 LTS como padrão.

Eu vejo o administrador anterior (que desde então deixou a empresa) editado / etc / crontab diretamente. No entanto, entendo que outra abordagem possível seria usar crontab -e como root. Existem argumentos convincentes para usar um ou outro, ou é a preferência?

    
por marcv81 06.09.2016 / 06:51

4 respostas

58

Pode ser útil observar que as tarefas em um crontab pessoal ( crontab -e ) são sempre executadas como seu proprietário, em que /etc/crontab contém um campo <user> obrigatório adicional, permitindo que um administrador configure a tarefa para ser executada como um usuário não root.

Editar o crontab do sistema ou configurar um crontab pessoal para o root é provavelmente um pouco mais portátil, não específico para certas distribuições Linux e possivelmente mais conveniente para uma pessoa manter, com todos os trabalhos em um arquivo único, mas:

Pessoalmente, sou a favor de uma terceira opção : para cada queda de tarefa agendada

  • um arquivo em /etc/cron.d/ com um snippet do cron
  • um executável (script) no diretório /etc/cron.[hourly |daily |weekly |monthly] relevante.

Isso é mais fácil de criar scripts (você pode simplesmente criar / sobrescrever / excluir tais arquivos e não precisa se preocupar com o conteúdo de um único arquivo crontab) e isso funciona bem com ferramentas de gerenciamento de configuração e é isso que pacote os gerentes já estão fazendo assim mesmo.

Jobs / scripts em /etc/cron.[hourly |daily |weekly |monthly] são sempre executados como root, em que os snippets cron em /etc/cron.d/ permitem definir um agendamento personalizado, além de executar um usuário diferente com o mesmo campo obrigatório <user> encontrado em /etc/crontab .

    
por 06.09.2016 / 07:13
16

Por melhor que eu me lembre, crontab -e tem a vantagem adicional de verificar a sintaxe do crontab antes de instalá-lo, e irá cometer erros e restaurar o anterior se você cometer algum erro. Desta forma, qualquer coisa que estivesse trabalhando anteriormente não parará de repente se você errar a sintaxe. Acho que a melhor prática é usar os utilitários, como executar visudo em vez de editar /etc/sudoers diretamente.

    
por 06.09.2016 / 15:12
2

É realmente uma questão de estilo, há uma razão pela qual vários métodos são oferecidos pelo sistema operacional. Basta ser consistente e não misturar e combinar se você não quiser confundir mais ninguém (ou você mesmo depois de algum tempo sem lidar com o sistema) - se é difícil ver quais tarefas estão realmente programadas em todo o host, ele tende para acabar com surpresas desagradáveis.

    
por 06.09.2016 / 14:58
2

Para ter certeza de adicionar um cron job que requer direitos de um usuário específico, eu pessoalmente uso o seguinte comando:

 # crontab -u <user> -e

Você também pode adicionar sudo .

Como afirmou @rackandboneman, não há necessidade de mexer nos arquivos /etc/cron.d/. Se a questão for sobre as tarefas cron do usuário, use os recursos do comando crontab .

    
por 06.09.2016 / 15:10