Diferença entre / etc / crontab e "crontab -e"

42

Qual é a diferença entre o crontab localizado no /etc/crontabe o crontab que pode ser editado usando crontab -e?

jrdioko
fonte

Respostas:

51

Como Ignacio disse, /etc/crontabé o crontab amplo do sistema.

O formato de /etc/crontabé assim:

# m h dom mon dow user      command
*   *  *   *   *  someuser  echo 'foo'

Embora crontab -eseja por usuário, vale mencionar, sem -uargumentos, que o comando crontab vai para o usuário atual crontab. Você pode fazer crontab -e -u <username>para editar um crontab de usuários específicos.

Observe que em um crontab por usuário não existe um campo 'usuário'.

# m h  dom mon dow  command
*   *   *   *   *   echo 'foo'

Um aspecto dos crontabs que pode ser confuso é que a raiz também possui seu próprio crontab. por exemplo crontab -e -u root, não irá editar /etc/crontab Veja Configurando o cron .

Na maioria das distribuições Linux, os crontabs por usuário geralmente são armazenados em: /var/spool/cron/crontabs/<username>(vixie-cron).

As distribuições baseadas em RHEL são armazenadas em /var/spool/cron/<username>. (cronie)

skrewler
fonte
FYI, o caminho fornecido acima está incorreto: crontabs por usuário são armazenados em / var / spool / cron / crontabs / <username> (eu tentei duas vezes para enviar essa correção simples.)
MartyMacGyver
1
... e está corrigido agora.
MartyMacGyver
Na verdade, ele é armazenado no /var/spool/cron/rootcrontab por usuário do root em um sistema RHEL 6. Não verifiquei o Ubuntu, mas dizer "normalmente" parece um pouco exagerado.
Wildcard
@Wildcard Eu acho que "normalmente" é uma palavra justa para usar. As distros do RHEL são enviadas com "cronie" (e acredito que anacron), que é o fork do ISC-Cron / vixie cron. Não acho que exagero, de qualquer forma, atualizei minha resposta para incluir mais detalhes.
Skrewler # 22/17
Para uma rápida pesquisa dos caminhos nas distribuições, procure a string path[crontabs]na biblioteca de "caminhos" do CFEngine e verifique o contexto (as linhas de contexto anteriores se parecem, por exemplo redhat::). Há mais variação do que você pensa; por exemplo, o SUSE os coloca /var/spool/cron/tabs. (Abstraindo diferenças distro é uma das razões CFEngine foi originalmente criado, por isso é muitas vezes uma boa referência.)
Wildcard
5

Um é o crontab do sistema e só pode ser editado pela raiz, e o outro é o usuário crontab e pode ser editado por um usuário e existe por usuário.

Ignacio Vazquez-Abrams
fonte