Root crontab non salverà


6

Sto cercando di aggiungere una voce crontab al crontab del mio utente root. Sono in grado di aggiungere una voce senza problemi al crontab del mio utente normale, ma quando lo faccio su per eseguire il root dell'utente e provare ad aggiungere una voce crontab non salva la voce.

Il processo che sto passando è:

$sudo su
$crontab -e
# write out my crontab entry and then :wq to write and quit vi
$crontab -l
crontab: no crontab for root

Ho anche provato ad uscire da vi usando wq! e ancora non salverà la voce.

La voce che sto inserendo è:

* * * * * /sayhi.sh

sayhi.sh è un semplice script di shell che sto usando per provare a verificare che il processo cron sia in esecuzione.

C'è qualcosa di diverso che devo fare se sto cercando di creare una voce crontab per root? Mi sono guardato intorno e non ho visto nulla su crontab che sia specifico per l'utente root.

Qualsiasi aiuto sarebbe apprezzato!


Risposte:


4

I tuoi comandi dovrebbero funzionare, tuttavia non è come lo farei io.

Invece prova: -

sudo crontab -e -u root

quindi per elencare: -

sudo crontab -l -u root

Come regola generale, mi danno un sacco di problemi mai eseguire una shell di root. Quando lo faccio uso sudo -s piuttosto che sudo su.

Quando esci da vi dovresti vedere due righe: -

crontab: no crontab for root - using an empty one
crontab: installing new crontab

Se non ottieni quelle due linee, hai dei problemi seri. Se lo fai e poi il comando list non mostra nulla sospetto problemi di autorizzazione.

Inoltre, non userei la tua riga di esempio mentre chiedi al sistema di eseguire "sayhi.sh" una volta al minuto tutto il giorno, tutti i giorni. Mi chiedo anche del percorso "/sayhi.sh" - hai davvero lo script nella parte superiore del tuo disco di avvio? Non è neanche una buona idea o forse intendi "~ / sayhi.sh" che in questo caso sarebbe nella directory principale di root (di solito / var / root) o vuoi dire il tuo home directory. Nei file crontab è preferibile codificare esplicitamente l'intero percorso, a prescindere.

Ti rendi anche conto che tutto il lavoro cron di cron non andrà a nessun terminale, ma verrà invece inviato via email a root (di default).

Se si desidera verificare che cron esegua le attività in modo semplice

*/5 * * * *   echo "CRON" > /Users/myname/.cronout

lo farà (il primo campo esegue l'attività molto più ragionevole ogni 5 minuti).

Gli stessi crontabs sono memorizzati in / usr / lib / cron / tabs. /usr/lib/cron è in realtà un collegamento a /var/at e se vai lì troverai il tabs directory e anche il cron.deny file. Verifica che nessuno abbia aggiunto root a questo e se non hai ancora gioia allora potresti provare:

echo > /var/at/tabs/root

che dovrebbe creare un file vuoto che potrebbe essere in grado di modificare.


funziona ~ in crontab - darei sempre il percorso completo
Mark

@ Mark - Sì, lo fa. Va nella casa del proprietario di crontab, ma come te ho sempre codificato completamente i percorsi in crontabs (e script di shell e funzioni di bash).
Tony Williams

@TonyWilliams, il 'sayhi.sh' a livello di root e ogni minuto è puramente a scopo di test. Lo script effettivo della shell che voglio eseguire è nella mia cartella home e alla fine verrà eseguito ad intervalli mensili. Darò una prova ai tuoi suggerimenti. Grazie!
Chris Schmitz

Hmm, quindi sono passato e ho impostato il lavoro di crontab della mia radice come suggerisci (grazie per aver indicato quei flag sudo btw), anche se quando scrivo e chiudo il crontab di root mi dà ancora il messaggio crontab: no crontab for root e non salva la voce di lavoro. Hai detto che potrebbe trattarsi di un problema di autorizzazioni, hai un suggerimento su quali autorizzazioni del file dovrei controllare? L'idea che l'utente root non abbia i permessi su un determinato file sembra strana, vero?
Chris Schmitz

Avvio da un altro disco ed eseguo "Autorizzazioni fisse" in Utility Disco.
Tony Williams

0

Avevo lo stesso problema. Ecco cosa ha funzionato per me (e per "lavorato" intendo che sono riuscito a far eseguire un cron job come root):

sudo bash -login            # su always tries to force me to change my password >:[
vi /usr/lib/cron/tabs/root  # Just edit it directly

chmod 600 /usr/lib/cron/tabs/root

I lavori che metti lì correranno, ma crontab -e continua a non funzionare, anche dopo aver creato il crontab.

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.