Programaticamente adicionar entrada ao crontab do usuário

3

Eu preciso adicionar uma linha ao arquivo crontab de um usuário. Normalmente, eu faria isso com crontab -e , mas quero fazer isso com um script de provisionamento.

Algum método inteligente?

    
por Xiong Chiamiov 03.08.2011 / 07:24

4 respostas

6

Que tal:

(crontab -u USERNAME -l ; echo "line to be added") | crontab -u USERNAME -

... ou (embora a edição direta de arquivos crontab não seja recomendada):

echo "line to be added" >> /var/spool/cron/crontabs/USERNAME

(Assumindo que seu script de provisionamento está sendo executado como root.)

    
por 03.08.2011 / 07:36
1

Existem algumas maneiras

Isso funcionará se você quiser que o usuário o edite

echo "normal crontab line here" >> /var/spool/cron/user

Se você não quiser que o usuário o edite, eu coloco um arquivo em /etc/cron.d que é como

0 0 * * * username /path/to/file

Você pode chamá-lo como quiser.

    
por 03.08.2011 / 07:30
1

Voltando a este ano mais tarde, se você se encontrar nesse tipo de situação, você deve dar uma boa olhada nas ferramentas de gerenciamento de configuração. Em particular, Ansible é uma ótima opção que se encaixa facilmente na infraestrutura existente, e possui um bom módulo cron .

    
por 09.08.2016 / 00:28
0

Você pode adicionar diretamente novos crons (se tiver privilégios de root). você também pode especificar o usuário run-as.

/etc/cron.d/filename

    
por 03.08.2011 / 08:05

Tags