Aggiungi righe al cron dallo script


Risposte:


49

Puoi fare eco alla linea in fondo al crontab degli utenti attuali in questo modo:

#!/bin/bash

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

+1 perché mi hai battuto (ho avuto un errore di script durante il test: D). 1 cosa che devi aggiungere penso: il sistema deve essere informato che è cronstato modificato.
Rinzwind,

Sapevo che sarebbe stata una corsa per ricevere risposta! Hai ragione in quel cron ha bisogno di essere avvisato. Questo è il motivo per cui non puoi semplicemente fare eco al comando fino alla fine del crontab. Ho provato che lo script sopra funziona e cron inizia a eseguire il comando.
Richard Holloway,

13
Oh, e penso che questo si crontab
risolva

7
Ti avverte che crontab degli utenti non esiste, se questo è il caso, ma lo creerà. Sto valutando i tuoi commenti come perspicaci.
Richard Holloway,

3

Se vuoi modificare un valore nel tuo crontab, puoi fare qualcosa sulla falsariga di:

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

Ovviamente devi stare attento con la tua sostituzione per essere sicuro che corrisponda solo alle linee che vuoi cambiare; altrimenti tutti foosvengono cambiati in bars(in questo esempio).

Il vantaggio di questo metodo è che non si sta sostituendo l'intero crontab. (Una pinzetta metaforica piuttosto che una mazza.)

È possibile utilizzare qualsiasi comando di modifica anziché sed . Ad esempio, se si desidera utilizzare ed per ritoccare una linea che inizia in questo modo:

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

Supponiamo che questa riga sia tra molte righe o che tu abbia molti crontab diversi da aggiornare su sistemi diversi e sai solo che la tua linea sarà l'unica riga con il termine flitchin essa.

Potrebbe apparire come:

$ 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
...

Ora devo ammettere che quasi il 100% delle volte sed farà quello che farà Ed , ma è sempre bene avere uno strumento in più sul coltellino svizzero. ^. ^

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.