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 problema al crontab del mio utente normale, ma quando I su per utente root e prova 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 a 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!

    
posta Chris Schmitz 10.02.2014 - 02:27
fonte

2 risposte

4

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

Prova invece: -

sudo crontab -e -u root

quindi per elencare: -

sudo crontab -l -u root

Come regola generale, ho un sacco di problemi a mai eseguire una shell di root. Quando lo faccio, utilizzo sudo -s anziché 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 riesci a ottenere quelle due linee hai problemi seri. Se lo fai e poi il comando list non mostra nulla sospetto problemi di autorizzazione.

Inoltre non utilizzerei la tua riga di esempio mentre chiedi al sistema di eseguire "sayhi.sh" una volta al minuto tutto il giorno, ogni giorno. 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 intendi la tua home directory . Nei file crontab è meglio 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à inviato via email a root (per impostazione predefinita).

Se vuoi 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 ci vai, troverai la directory tabs e anche il file cron.deny . 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 potresti essere in grado di modificare.

    
risposta data 10.02.2014 - 02:58
fonte
0

Stavo avendo lo stesso problema. Ecco cosa ha funzionato per me (e per "funzionato" 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 hai inserito verranno eseguiti, ma crontab -e continua a non funzionare, anche dopo aver creato il crontab.

    
risposta data 30.09.2017 - 22:37
fonte

Leggi altre domande sui tag