Adicionar linhas ao cron a partir do script


Respostas:


49

Você pode fazer eco da linha na parte inferior do crontab de usuários atuais assim:

#!/bin/bash

line="* * * * * /path/to/command"
(crontab -u userhere -l; echo "$line" ) | crontab -u userhere -

+1 porque você me venceu (tive um erro de script durante o teste: D). Uma coisa que você precisa adicionar, penso: o sistema precisa ser informado de que cronfoi alterado.
Rinzwind

Eu sabia que seria uma corrida para ser respondida! Você está certo de que o cron precisa ser notificado. É por isso que você não pode simplesmente repetir o comando até o final do crontab. Eu testei que o script acima funciona e o cron começa a executar o comando.
Richard Holloway

13
Ah, e eu acho que isso também erros se crontabpara esse usuário não existe ainda (?)
Rinzwind

7
Ele avisa que o usuário crontab não existe, se for esse o caso, mas será criado. Estou votando seus comentários como perspicazes.
Richard Holloway

3

Se você deseja editar um valor no seu crontab, pode fazer algo como:

$ crontab -l | sed -e 's/foo/bar/' | crontab -

Obviamente, você precisa ter cuidado com sua substituição para garantir que ela corresponda apenas à (s) linha (s) que deseja alterar; caso contrário, todos foosserão alterados para bars(neste exemplo).

A vantagem desse método é que você não está substituindo o crontab inteiro. (Uma pinça metafórica em vez de uma marreta.)

Você pode usar qualquer comando de edição em vez de sed . Por exemplo, se você deseja usar ed para retocar uma linha que começa assim:

2 * * * * /sbin/flitch --days 3,4 > /var/log/flitch.out 2>&1

Digamos que essa linha esteja entre muitas linhas ou você tenha muitos crontabs diferentes para atualizar em sistemas diferentes e você sabe apenas que sua linha será a única linha com o termo flitchnela.

Pode parecer com:

$ cat /tmp/edscript
/flitch
s/3/9/
w
q
$ crontab -l > /tmp/out && ed /tmp/out < /tmp/edscript && crontab - < /tmp/out
$ crontab -l
...
2 * * 1 * /sbin/flitch --days 9,4 > /var/log/flitch.out 2>&1
...

Agora devo admitir que quase 100% do tempo sed irá fazer o que ed vai fazer, mas é sempre bom ter uma ferramenta extra sobre o canivete suíço. ^. ^

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.