Você pode fazer o eco da linha na parte inferior do usuário atual crontab assim:
#!/bin/bash
line="* * * * * /path/to/command"
(crontab -u userhere -l; echo "$line" ) | crontab -u userhere -
Existe uma maneira de adicionar linhas ao cron de um usuário via script?
Geralmente faço isso usando crontab -e
, mas gostaria de automatizar essa tarefa com um script de shell.
Você pode fazer o eco da linha na parte inferior do usuário atual crontab assim:
#!/bin/bash
line="* * * * * /path/to/command"
(crontab -u userhere -l; echo "$line" ) | crontab -u userhere -
Se você quiser editar um valor no seu crontab, você pode fazer algo como:
$ crontab -l | sed -e 's/foo/bar/' | crontab -
Obviamente, você precisa ter cuidado com sua substituição para ter certeza de que ela corresponde apenas à (s) linha (s) que você deseja alterar; caso contrário, todos os foos
serão alterados para bars
(neste exemplo).
A vantagem deste 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ê quisesse usar ed para retocar uma linha que começa assim:
2 * * * * /sbin/flitch --days 3,4 > /var/log/flitch.out 2>&1
Digamos que esta linha esteja entre várias linhas ou que você tenha muitos crontabs diferentes para atualizar em sistemas diferentes e saiba apenas que sua linha será a única com o termo flitch
nela.
Pode parecer:
$ 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 fará o que ed fará, mas é sempre bom ter uma ferramenta extra no canivete suíço . ^. ^
Tags cron scripts automation