Existe alguma ferramenta de linha de comando para gerenciar os trabalhos Cron?

3

Alguém sugeriria qualquer ferramenta ou script útil de linha de comando (NÃO na web) que adicione, habilite e desabilite trabalhos Cron? Estou procurando, por exemplo, o seguinte comportamento (ou similar):

sh manageCron.sh -idJob 'job1' -addJob '* * * * * <do some job>'
sh manageCron.sh -dissableJob 'job1' 

O comando crontab -e é bom para edição manual de arquivos crontab, mas eu preciso automatizar.

    
por adrift 28.12.2011 / 14:59

4 respostas

1

crontab -u USER -l listará o crontab para STDOUT.

crontab -u USER FILE carregará FILE como crontab para USER.

Agora, a única coisa que está faltando é uma maneira de identificar seus "trabalhos".

"AddJob" adicionará uma linha à saída do crontab atual e a lerá como novo crontab.

"DisableJob" apenas colocará um comentário na frente da sua linha de trabalho,

"EnableJob" removerá um comentário da sua linha de trabalho.

    
por 28.12.2011 / 22:52
1

Este é o que eu usei anteriormente para gerenciar, automatizar crontab, no entanto, não é algo que realmente goste do que você está procurando. link

CFperl CFEngine 'tem esse tipo de comportamento, que poderia ser usado para construir algo como você está pedindo. O Crontab é, na verdade, um arquivo de configuração simples e, em seguida, o cron (d) analisa os crontabs individuais (ou os que estão sob / var / spool / cron /) e faz a lista de eventos agendados na memória.

Então, se você está procurando quebrar sua configuração novamente com o crontab simplista do cron, então talvez você não esteja procurando pelo cron mas algum outro programador que irá acionar seus jobs.

    
por 28.12.2011 / 15:31
1

Eu não sei se um aplicativo "automatiza" a manutenção de um crontab. O que eu faço é manter um crontab 'master', editar isso, então use crontab ~/etc/app.cron ou algo similar. Então seria fácil criar algo para automatizar a modificação de ~ / etc / app.cron.

Para trabalhos nomeados como você quer, você terá que criar um mini banco de dados com os nomes dos trabalhos, ou adicionar o nome do trabalho a um comentário estruturado no final da linha crontab.

    
por 28.12.2011 / 16:18
1

Você pode automatizar tarefas agendadas com crontab -e . Como crontab -e chama o editor especificado por $VISUAL , ou $EDITOR if VISUAL não está definido, especifique algum script como $VISUAL .

script=$(mktemp)
cat <<'EOF' >"$script"
#!/usr/bin/ed -s
1,$/#job1$/d
$a
1 2 3 4 5 new job #job2
.
w
q
EOF
VISUAL="$script" crontab -e
rm -f "$script"

Não há noção intrínseca de nomes de trabalho; você pode facilmente criar um adicionando um comentário como #jobname no final de cada linha, como no exemplo acima.

Em vez de crontab -e , você pode achar mais fácil despeje o arquivo atual, edite-o e instale a nova versão ou mantenha uma cópia mestra e instale-a quando for alterada . Usar uma cópia mestre significa que você não deve editar o crontab por outros meios, ou suas alterações serão substituídas. Despejar o arquivo atual e editá-lo significa que, se algo ou alguém editar o crontab ao mesmo tempo, quem instalar primeiro terá suas alterações sobrescritas; algumas versões de crontab evitam isso bloqueando o arquivo enquanto crontab -e está em operação, mas não sei se o Solaris possui.

    
por 29.12.2011 / 00:49