Questão Vários crontabs para um usuário


Existe uma maneira de usar vários arquivos Crontab para um usuário? Pensando em algo ao longo das linhas de arquivo crontab por projeto em vez de crontab por usuário ...

Qualquer ajuda é apreciada ...


11


origem




Respostas:


Geralmente, é uma boa idéia manter seu crontab em um arquivo separado e instalá-lo com crontab filename. (Mantenho meu arquivo crontab em um sistema de controle de origem.)

Você pode ter vários arquivos crontab e instalá-los todos com

cat file1 file2 file3 | crontab

o crontab O comando normalmente gerencia apenas um único crontab por usuário. Mas você pode adicionar arquivos crontab do sistema ao /etc/cron.d diretório. Esses arquivos têm um campo extra após a especificação de hora que indica o usuário para o trabalho e você pode ter vários arquivos por usuário. Mesmo que um deles tenha um erro de sintaxe, os outros ainda serão executados.

Você precisará de acesso root para instalar arquivos nesse diretório.

man 5 crontab para detalhes.

Não estou convencido de que contornar o mecanismo normal de crontab como este é uma boa ideia, mas deve funcionar.

(Isso pressupõe a implementação "Vixie Cron", que é provavelmente o que seu sistema usa.)

NOTA: Você pode ser tentado a tentar

crontab file1 file2 file3 # WRONG

mas uma experiência rápida mostra que todos os nomes de arquivos, mas os primeiros, são silenciosamente ignorados. A man page diz que um único nome de arquivo é aceito, mas não diz o que acontece se vários nomes de arquivo forem fornecidos.


12



Eu fiz isso hoje. Isso seria fácil de fazer, mas o objetivo com isso é que cada gerente de projeto teria controle sobre seu próprio crontab. Com essa abordagem, teria que ser combinada assim toda vez que alguém alterasse um dos arquivos, o que significa que eles teriam que acompanhar todos os arquivos que precisam ser compilados.
Então, crie um programa (ou script, ou qualquer outro) para automatizá-lo. Note que você pode invocar o crontab comando de uma entrada crontab. - Keith Thompson
@MateuszKonieczny: Essa é uma boa razão, mas também é fácil de apagar seu crontab acidentalmente. crontab sem argumentos lê um novo crontab de stdin. - Keith Thompson
@MateuszKonieczny: Não, eu apenas guardo em um repositório de CVS e copto para $HOME quando eu atualizar. (Eu uso o CVS porque o Git não existia quando eu comecei a fazer isso.) - Keith Thompson
@KeithThompson Oh, te peguei! Estou criando um documento para ajudar as pessoas a rodar o Fedora Core 24 a partir do "scratch" sem evolução ou gnome: github.com/barrycarter/bcapps/blob/master/FEDORA e queria compartilhar parte do meu arquivo cron, mas não tudo. Sua solução (criar bc-public-cron no diretório GIT e bc-private-cron fora dela) se encaixa bem na conta. - barrycarter


Por que você faria isso? Você poderia usar várias linhas no crontab - acho que isso também funcionaria.

Existem também os diretórios que você provavelmente poderia usar:

cron.d/
cron.daily/
cron.hourly/
cron.monthly/
cron.weekly/

4



É assim que é agora :) Eu só gostaria de saber se existe uma maneira de fazer isso