
Suponha que estou criando dois arquivos crontab.
/tmp/my-crontab
/root/my-alternate-crontab
Cada arquivo crontab é programado para executar scripts diferentes.
Quando inicio o cronjob o primeiro é substituído pelo mais antigo.
crontab -u smarak /tmp/my-crontab
crontab -u smarak /root/my-alternate-crontab
O acima é possível para um único usuário?
Responder1
Duas maneiras de contornar um único crontab.
Coloque suas entradas do crontab em arquivos em algum diretório, como e ~/crontab.d/thisandthat.cron
, em seguida, envie quaisquer alterações delas para o crontab do sistema com:
cat ~/crontab.d/*.cron | crontab -
A extensão .cron
serve para evitar a inclusão acidental de arquivos de backup dos editores. Observe que, como todos os arquivos são concatenados, quaisquer variáveis definidas nos arquivos também serão aplicadas aos arquivos posteriores.
Você também pode fazer algo semelhante a como /etc/cron.hourly
e amigos são implementados no Debian. O principal /etc/crontab
contém regras como esta:
17 * * * * root cd / && run-parts --report /etc/cron.hourly
Você pode organizar uma única entrada do crontab para executar vários programas. O do Debian run-parts dir
é semelhante, for f in dir/* ; do "$f" ; done
exceto que ele ignora nomes de arquivos estranhos, novamente para evitar a execução de arquivos de backup criados por editores, etc.
Responder2
Não. Cada usuário possui um crontab. Por que? Porque o crontab é a "tabela" ("tab") de todos os cron jobs associados a um único usuário.
Se você quiser executar várias coisas cron
, basta adicionar várias linhas no seu crontab.
Se você tiver vários arquivos com especificações de cron job, basta concatená-los:
cat crontab1 crontab2 crontab3 >my-crontab
crontab my-crontab
Responder3
Você pode simplesmente ler a entrada real e anexar a nova logo em seguida.
Depois de ter este em execução:
crontab -u smarak /tmp/my-crontab
Idealmente, você poderia fazer algo como:
crontab -u smarak <(cat /root/my-alternate-crontab) <(crontab -l)
Mas parece que o crontab não aceita o formulário acima, então aqui está a solução:
cat /root/my-alternate-crontab <(crontab -l)| crontab -u smarak -
Isso funciona para mim. Espero que ajude.