Esistono due modi per modificare uno crontab:
interattivamente, usando crontab -e, che si aprirà crontabnell'editor specificato da $VISUALo $EDITOR, o
in modo non interattivo, utilizzando crontab crontab.txt, che importerà semplicemente le crontabvoci dal file crontab.txt, sostituendo il crontab attivo esistente per l'utente corrente.
Il problema che hai è che stai semplicemente usando il crontabcomando sbagliato.
Quanto segue riguarda la manipolazione crontab non interattiva:
Quindi, per rimuovere determinate attività a livello di codice, potresti fare qualcosa del genere
$ crontab -l | grep -v 'PATTERN' >crontab.txt && crontab crontab.txt
dove si PATTERNtrova un'espressione regolare che corrisponderà alle attività che desideri rimuovere. Qui, crontab -lti darà la tua corrente crontab.
Oppure, se hai voci in un file chiamato crontab-fragment.txtche desideri rimuovere dal crontab attivo,
$ crontab -l | grep -v -Fx -f crontab-fragment.txt >crontab.txt && crontab crontab.txt
Questo legge l'attuale crontab e filtra (rimuove) qualsiasi riga presente anche nel file crontab-fragment.txtnella directory corrente (usando un confronto di stringhe di riga completa). Il risultato viene salvato crontab.txte quindi caricato da lì per sostituire l'attuale crontab.
Per aggiungere una o più attività , fai qualcosa di simile
$ crontab -l | cat - crontab-fragment.txt >crontab.txt && crontab crontab.txt
Ciò presuppone che il file crontab-fragment.txtcontenga le voci che si desidera aggiungere. Legge l'attuale crontab, aggiunge le voci crontab-fragment.txta questo e crea crontab.txt. Il crontab.txtfile sostituisce quindi il crontab corrente.