it-swarm-eu.dev

Was ist los mit meiner Konfiguration von cron.hourly?

Jede Stunde erhalte ich eine E-Mail mit einem solchen Fehler.

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

/bin/sh: root: not found

Der Inhalt von/etc/crontab ist wie folgt: Entweder ich entferne den Benutzer "root" oder nicht (6. Spalte), ich erhalte den gleichen Fehler.

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 )
#

In meinem cron.hourly-Verzeichnis befinden sich zwei Dateien:

$ 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

Das erste Skript lautet wie folgt:

$ 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

Selbst wenn ich beide Skripte in meinem Verzeichnis /etc/cron.hourly/ entferne, erhalte ich stündlich dieselbe Fehler-E-Mail. Ich habe versucht, cron neu zu starten und erhalte immer noch die gleiche Fehlermeldung. Die nächste Idee, die ich habe, ist ein Neustart, aber ich würde das vermeiden.

$ Sudo /etc/init.d/cron restart

Meine Ubuntu-Version lautet wie folgt:

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

pdate: Ich habe die 6. Spalte "root" aus meiner/etc/crontab-Datei entfernt, da bei der Online-Suche jemand erwähnt hat, der das Problem beheben könnte. Jetzt denke ich, dass das Problem war, dass ich mit der crontab-Konfiguration des Systems herumgespielt habe, anstatt mit der des Roots.

$ 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

Die Standard-crontab-Datei aus dem cron-Paket (3.0pl1-100ubuntu2.1, dies ist die neueste Version von Ubuntu 8.04) sieht folgendermaßen aus:

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 )

Sie sollten dies nur nehmen und in die Datei einfügen können, aber möglicherweise möchten Sie auch sicherstellen, dass Sie über die neueste Version des Pakets verfügen. Sie können dies tun, indem Sie:

apt-get update
apt-get install cron

pdate:

Es gibt zwei verschiedene Arten von Crontabs: Die Crontab des Systems befindet sich in /etc/crontab. Diese Crontab hat diese fromat:

minute hour dayOfMonth month dayOfWeek userToRunAs restOfLineIsCommand

Der andere Typ ist der des Benutzers crontab. Dies kann mit dem crontab geändert werden. Die eigentliche Konfiguration befindet sich in /var/spool/cron/crontabs/USERNAME und wird immer als der Benutzer ausgeführt, dem sie gehört. Das Format dieser Datei lautet:

minute hour dayOfMonth month dayOfWeek restOfLineIsCommand
6
LassePoulsen

Ich weiß, dass Sie gesagt haben, dass Sie immer noch die Fehler erhalten, nachdem Sie die "Wurzel" in der sechsten Spalte entfernt haben, aber es sieht wirklich nach dem Problem aus.

Schauen Sie sich zum Beispiel die anderen Zeilen an. Sie alle beginnen mit "Test". Das ist kein Benutzer, das ist der Anfang eines Befehls. Das Entfernen des "root" würde dazu führen, dass Ihr Befehl mit "cd" beginnt.

Zumal die Fehlermeldung besagt, dass "root" nicht gefunden werden kann. Dies ist der Fehler, den Sie erhalten, wenn Sie versuchen, ein nicht vorhandenes Programm auszuführen.

Also würde ich sagen, versuchen Sie es noch einmal zu entfernen.

1
Michael Terry

Dein /etc/crontab sieht in der Tat lustig aus. Jede Zeile sollte eigentlich eine Benutzerspalte haben, was der lustigste Teil ist. Zum Beispiel lautet meine:

# /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 )
#

Übrigens ist es normalerweise keine gute Idee, diese Datei zu berühren. Wenn Sie weitere generische Crontabs hinzufügen müssen, verwenden Sie hierfür /etc/cron.d. Sie können versuchen, die Standardkonfiguration für das Cron-Paket wiederherzustellen:

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

und prüfen Sie, ob das Problem behoben ist.

1
ℝaphink

Hier spielen wirklich zwei Dinge eine Rolle. Eine (umso offensichtlicher) ist die falsche 6. Spalte in der persönlichen Crontab von root. Der zweite stille Befehl ist der Befehl, der jemals nach der stündlichen Cron-Zeile in /etc/crontab nicht ordnungsgemäß ausgeführt wird. Die Updates sind unten:


Sie können die gefälschte Benutzer-Crontab-Datei entfernen, indem Sie Sudo crontab -r ausführen.


Sobald dies abgeschlossen ist, müssen Sie den Root-Benutzer in der /etc/crontab -Datei für jede Zeile nach der stündlichen Cron-Zeile wie folgt hinzufügen:

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 )
#

Damit sollten diese E-Mail-Probleme behoben sein.

1
Marco Ceppi

Mach es:

# crontab -r

Und mach es NICHT:

# crontab /etc/crontab

Bearbeitet stattdessen die Datei /etc/crontab manuell.

0
user11267