wake-up-neo.net

Cosa c'è di sbagliato nella mia configurazione cron.hourly?

Ogni ora ricevo un'email con errori come questo,

Subject: Cron <[email protected]> root    cd / && run-parts --report /etc/cron.hourly

/bin/sh: root: not found

Il contenuto di/etc/crontab è il seguente, o rimuovo l'utente "root" oppure no (sesta colonna), ottengo lo stesso errore.

Shell=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user  command
11 *    * * *   root    cd / && run-parts --report /etc/cron.hourly
25 6    * * *   test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6    * * 7   test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6    1 * *   test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
#

Ci sono due file nella mia directory cron.hourly,

$ ll /etc/cron.hourly/
total 0
lrwxrwxrwx 1 root root 25 2009-10-29 09:24 ntpsync -> /home/<user>/bin/ntpsync
lrwxrwxrwx 1 root root 28 2009-10-23 10:33 foo -> /home/<user>/bin/foo

La prima sceneggiatura recita come segue,

$ cat ~/bin/ntpsync
#!/usr/bin/env bash
echo "user: $USER"
if [[ "$USER" == "root" ]] ; then
    ntpdate ntp.ubuntu.com
else
    Sudo ntpdate ntp.ubuntu.com
fi

Anche rimuovendo entrambi gli script nella mia directory /etc/cron.hourly/, ricevo sempre la stessa e-mail di errore ogni ora. Ho provato a riavviare cron e ricevo ancora la stessa e-mail di errore. L'idea successiva che ho è di riavviare, ma lo eviterei.

$ Sudo /etc/init.d/cron restart

La mia versione di Ubuntu è la seguente,

$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=8.04
DISTRIB_CODENAME=hardy
DISTRIB_DESCRIPTION="Ubuntu 8.04.1"

Aggiornamento: Ho rimosso la sesta colonna "root" dal mio file/etc/crontab in precedenza perché quando ho cercato online qualcuno ha menzionato che poteva risolvere il problema. Ora penso che il problema fosse che stavo scherzando con il sistema crontab config invece che con quello di root.

$ Sudo crontab -l
# m h  dom mon dow   command
17 *    * * *   root    cd / && run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
6
grokus

Il file crontab predefinito dal pacchetto cron (3.0pl1-100ubuntu2.1 questa è l'ultima versione di Ubuntu 8.04) è simile al seguente:

Shell=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user  command
17 *    * * *   root    cd / && run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )

Dovresti essere in grado di prenderlo e incollarlo nel file, ma potresti anche assicurarti di avere l'ultima versione del pacchetto. Puoi farlo facendo:

apt-get update
apt-get install cron

Aggiornamento:

Esistono due diversi tipi di crontab, uno è il crontab del sistema che si trova in /etc/crontab. Questo crontab ha questo fromat:

minute hour dayOfMonth month dayOfWeek userToRunAs restOfLineIsCommand

L'altro tipo è il crontab degli utenti, che può essere modificato usando crontab. La configurazione effettiva si trova in /var/spool/cron/crontabs/USERNAME ed è sempre eseguita come l'utente proprietario, e il formato di quel file è:

minute hour dayOfMonth month dayOfWeek restOfLineIsCommand
6
LassePoulsen

So che hai detto che ricevi ancora errori dopo aver rimosso la "radice" nella sesta colonna, ma sembra proprio il problema.

Ad esempio, guarda le altre linee. Iniziano tutti con "test". Non è un utente, è l'inizio di un comando. Rimuovere "root" fa iniziare il tuo comando con "cd".

Soprattutto perché il messaggio di errore dice che non è possibile trovare "root", che è l'errore che si ottiene quando si tenta di eseguire un programma che non esiste.

Quindi direi di provare a rimuoverlo di nuovo.

1
Michael Terry

Il tuo /etc/crontab sembra davvero divertente. Ogni riga dovrebbe effettivamente avere una colonna utente, che è la parte più divertente. Ad esempio, il mio recita:

# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.

Shell=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user  command
17 *    * * *   root    cd / && run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
#

A proposito, di solito non è una buona idea toccare questo file. Se è necessario aggiungere altri crontab generici, utilizzare /etc/cron.d per questo. Puoi provare a ripristinare il configuratino predefinito per il pacchetto cron con:

$ Sudo apt-get install --reinstall --yes -o DPkg::Options::=--force-confmiss -o DPkg::Options::=--force-confnew cron

e vedere se risolve il problema.

1
ℝaphink

Ci sono davvero due problemi in gioco qui. Uno (il più ovvio) è la sesta colonna impropria nel crontab personale di root. Il secondo silenzioso - è che mai il comando dopo la linea cron oraria in /etc/crontab non viene eseguito correttamente. Le correzioni sono di seguito:


È possibile rimuovere il file crontab dell'utente fasullo eseguendo Sudo crontab -r


Una volta completato, dovrai aggiungere l'utente root nel file /etc/crontab per ogni riga dopo la cronologia oraria - in questo modo:

Shell=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user  command
11 *    * * *   root    cd / && run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
#

Questo dovrebbe risolvere quei problemi di posta elettronica.

1
Marco Ceppi

Fallo:

# crontab -r

E NON farlo:

# crontab /etc/crontab

Invece, modifica il file /etc/crontab manualmente.

0
user11267