Incluindo arquivo na configuração do crontab?

8

Estou tentando colocar a configuração específica do projeto crontab no repositório de código para facilitar a atualização de tarefas cron em todos os back-ends durante a implantação.

É possível incluir arquivos na configuração do crontab? Algo como

* * * * * execsomething /blablabla/blah/
* * * * * onemore /blablabla
@include '/home/user/project/crontab.conf'
Kirzilla
fonte

Respostas:

8

Dependendo do seu daemon cron e sua distribuição, deve haver vários diretórios no / etc onde você pode colocar arquivos com tarefas para o cron.

Os scripts (trabalhos não formatados em cron) colocados nos seguintes diretórios serão executados nos intervalos especificados. Observe que a frequência é garantida, mas o tempo exato em que pode ser executado pode não ser. Para a maioria dos usuários, esses diretórios são suficientes:

/etc/cron.hourly
/etc/cron.daily
/etc/cron.weekly
/etc/cron.monthly

Os trabalhos no formato cron (como os exemplos acima) colocados no diretório a seguir serão executados pelo cron nos horários especificados. Observe que, além das entradas normais, o usuário do trabalho também precisa ser especificado antes do comando. Para pacotes e distribuições de software, esse método é a melhor maneira de distribuir cronjobs:

/etc/cron.d

Exemplo de um comando formatado cron.d:

1 1 * * * root echo "serverfault is awesome" > /dev/null
Boscoe
fonte
O nome de usuário pode ser uma variável? Eu tenho vários comandos que precisam ser executados como o mesmo usuário, mas podem ser um usuário diferente em ambientes diferentes. Posso fazer algo como $ USER = joeblow 1 1 * * * $ USER echo "serverfault is awesome"> / dev / null
Jay K #
Depende do daemon cron. cronie não permite variáveis ​​de ambiente, por exemplo.
Boscoe 16/05
4

Não tão longe quanto o que sei; /etc/cron.dé para isso que serve.

Como Boscoe apontou, também existem os /etc/cron.{hourly,daily,weekly,monthly}diretórios, mas os trabalhos nele podem ser executados apenas como root (a menos que você use explicitamente /bin/supara alterar o EUID). Os trabalhos /etc/cron.dtêm um campo extra que especifica o usuário em que são executados e a maneira como sua pergunta contém um /home/usercaminho me faz pensar que você deseja que esses trabalhos possam ser executados como usuários arbitrários.

Chapeleiro Louco
fonte