Vários crontabs para um usuário


13

existe uma maneira de usar vários arquivos crontab para um usuário? Pensando em algo semelhante ao arquivo crontab por projeto em vez de crontab por usuário ...

Qualquer ajuda é apreciada ...

Respostas:


13

Geralmente, é uma boa ideia manter seu crontab em um arquivo separado e instalá-lo com ele crontab filename. (Eu 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 crontabcomando normalmente gerencia apenas um único crontab por usuário. Mas você pode adicionar arquivos crontab do sistema ao /etc/cron.ddiretório Esses arquivos têm um campo extra após a especificação de tempo 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 seja uma boa ideia, mas deve funcionar.

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

NOTA: Você pode ficar tentado a tentar

crontab file1 file2 file3 # WRONG

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


Eu fiz isso hoje. Isso seria fácil, mas o objetivo é que cada "gerente" do projeto tenha controle sobre seu próprio crontab. Com essa abordagem teria de ser combinada como que cada vez que alguém muda um dos arquivos, o que significa que eles terão de manter o controle de todos os arquivos que precisam ser compilados

1
Portanto, crie um programa (ou script, ou o que seja) para automatizá-lo. Observe que você pode chamar o crontabcomando a partir de uma entrada crontab.
Keith Thompson

1
@MateuszKonieczny: Essa é uma boa razão, mas também é fácil apagar seu crontab acidentalmente. crontabsem argumentos lê um novo crontab de stdin.
amigos estão dizendo sobre keith Thompson

1
@MateuszKonieczny: Não, eu apenas o mantenho em um repositório CVS e o copoyo ao $HOMEatualizá-lo. (Eu uso CVS porque Git não existia quando eu comecei a fazer isso.)
Keith Thompson

1
@KeithThompson Oh, entendi! Estou criando um documento para ajudar as pessoas a rodar o Fedora Core 24 do zero, sem evolução ou gnome: github.com/barrycarter/bcapps/blob/master/FEDORA e queria compartilhar parte do meu arquivo cron, mas não todo. Sua solução (criar bc-public-cron no diretório GIT e bc-private-cron fora dele) se encaixa perfeitamente.
Barrycarter

4

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

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

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

Isso é como é agora :) Eu só gostaria de saber se existe uma maneira de fazer isso
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.