C'è un modo per aggiungere righe al cron di un utente tramite script?
Di solito lo faccio usando crontab -e
, ma vorrei automatizzare questo compito con uno script di shell.
C'è un modo per aggiungere righe al cron di un utente tramite script?
Di solito lo faccio usando crontab -e
, ma vorrei automatizzare questo compito con uno script di shell.
Risposte:
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 -
cron
stato modificato.
crontab
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 foos
vengono 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 flitch
in 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. ^. ^