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 deixou a empresa) editado o / etc / crontab diretamente. No entanto, eu entendo que outra abordagem possível seria usar crontab -e
como root. Existe algum argumento convincente para usar um ou outro, ou é preferível?
linux
cron
ubuntu-14.04
marcv81
fonte
fonte
Respostas:
Pode ser útil observar que os trabalhos em um crontab pessoal (
crontab -e
) são sempre executados como seus proprietários, onde/etc/crontab
contém um<user>
campo obrigatório adicional , permitindo que um administrador configure o trabalho para ser executado como um usuário não raiz.Editar o crontab do sistema ou configurar um crontab pessoal para root provavelmente é um pouco mais portátil, não específico para determinadas distribuições Linux e sem dúvida mais conveniente para uma pessoa manter, com todos os trabalhos em um único arquivo, mas:
Pessoalmente, sou a favor de uma terceira opção : para cada tarefa agendada, solte
/etc/cron.d/
com um trecho de cron/etc/cron.[hourly |daily |weekly |monthly]
diretório relevante .É mais fácil criar scripts (você pode simplesmente criar / sobrescrever / excluir esses arquivos e não precisa mexer no conteúdo de um único arquivo crontab) e isso funciona bem com as ferramentas de gerenciamento de configuração e é isso que os gerenciadores de pacotes já estão fazendo assim mesmo.
Os trabalhos / scripts
/etc/cron.[hourly |daily |weekly |monthly]
são sempre executados como raiz, onde os trechos do cron/etc/cron.d/
permitem definir um agendamento personalizado e também executar como um usuário diferente com o mesmo<user>
campo obrigatório encontrado em/etc/crontab
.fonte
/etc/crontab
é que uma mesclagem será necessária sempre que você atualizar ocron
pacote. Você não tem esse problema se apenas adicionar um novo arquivo a um dos/etc/cron.*
diretórios./etc/cron.[hourly |daily |weekly |monthly]
mantém executáveis, enquanto/etc/cron.d
mantém crontabs. Fora isso, +1.Pelo que me lembro,
crontab -e
tem a vantagem adicional de verificar a sintaxe do crontab antes de instalá-lo, e irá errar e restaurar a anterior se você cometer um erro. Dessa forma, tudo o que estava funcionando anteriormente não será interrompido repentinamente se você errar a sintaxe. Eu acho que a melhor prática é usar os utilitários, como executar emvisudo
vez de editar/etc/sudoers
diretamente.fonte
/etc/crontab
linha com um nome de usuário na 6a coluna). - Embora eu queira argumentar que o uso de ferramentas interativas não é uma "prática recomendada" , você deve automatizar com ferramentas como Puppet / Salt / Ansible etc. e, em primeiro lugar, não deve mais configurar servidores manualmente. Por outro lado, se você é da velha escola, use suas ferramentas.É realmente uma questão de estilo, há uma razão pela qual vários métodos são oferecidos pelo sistema operacional. Apenas seja consistente e não misture e combine, se você não quiser confundir mais ninguém (ou você mesmo depois de algum tempo sem lidar com o sistema) - se for difícil ver quais tarefas são realmente agendadas em todo o host, isso tende a para terminar em surpresas desagradáveis.
fonte
Para ter certeza de adicionar um trabalho cron que exija direitos de um usuário específico, eu pessoalmente uso o seguinte comando:
Você pode adicionar
sudo
também.Como @rackandboneman afirmou, não há necessidade de mexer nos arquivos /etc/cron.d/. Se o assunto é sobre tarefas agendadas pelo usuário, use os recursos de
crontab
comando.fonte