Wie führe ich einen Cron-Job aus, der jede Minute ausgeführt wird?

7

Ich versuche, ein Verzeichnis mit einem Zeitstempel im Namen im /homeVerzeichnis zu erstellen . Ich habe den folgenden Cron-Job als Root-Benutzer erstellt, aber er wird nicht ausgeführt. Was mache ich falsch?

Es folgt mein Cron-Job, den ich mit Root-Benutzerrechten erstellt habe.

[root@bvdv-emmws01 home]# crontab -l
* * * * * /home/test.sh

Es folgen die Inhalte von /home/test.sh. Update: Vollständiger Pfad für das Verzeichnis hinzugefügt.

[root@bvdv-emmws01 home]# cat /home/test.sh 
#!/bin/bash
mkdir /home/test_$(date -d "today" +"%Y%m%d%H%M%S")

Erlaubnis von /home/test.sh:

[root@bvdv-emmws01 home]# ls -ltr /home/test.sh
-rwxrwxrwx 1 root root 58 Dec  2 12:58 /home/test.sh

Ich habe die /etc/crontabDatei aktualisiert . Diese Datei hat jetzt den folgenden Inhalt:

[root@bvdv-emmws01 home]# cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name command to be executed

* * * * * root /home/test.sh

Status von crond daemon

[root@bvdv-emmws01 home]# service crond status
crond (pid  1910) is running...
Tahir Akram
quelle
Funktioniert es, wenn Sie /home/test.shin einer Shell ausführen ? Was ist die Ausgabe von ls -l /home/test.sh?
Hauke ​​Laging
Möglicherweise möchten Sie auch absolute Pfade in Ihrem Skript verwenden.
John WH Smith
[root@bvdv-emmws01 home]# ls -l test.sh -rwxrwxrwx 1 root root 58 Dec 2 12:58 test.sh
Tahir Akram
@HaukeLaging, wenn ich es durch Shell laufen lasse, erstellt es Verzeichnis mit Namen wie test_00000000
Tahir Akram
1
Diese Verzeichnisse werden im Home-Verzeichnis des Benutzers erstellt (hier also rootso etwas wie /oder /root).
Stéphane Chazelas

Antworten:

9

Für eine Crontab, die mit erstellt crontab -eund mit aufgelistet werden kann, crontab -lsollte kein Benutzer für den Befehl angegeben werden. Ihr Eintrag sollte lauten:

* * * * * /home/test.sh

Oder setzen Sie alternativ die Zeile ein, die Sie /etc/crontabstattdessen haben.

Aus man 5 crontab(Abschnitt BEISPIEL SYSTEM CRON FILE):

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

Beachten Sie den letzten Satz.

Anthon
quelle
Ich habe * * * * * root /home/test.shin meinem hinzugefügt /etc/crontab. Aber immer noch kein Glück. Verzeichnis in meinem kann nicht angezeigt werden /home.
Tahir Akram
@ TahirAkram Kannst du cat /home/test.shstattdessen cat test.shdie Ausgabe in deine Frage einfügen?
Anthon
1
Läuft Crond Deamon?
Albert
Hat test.sh die ausführbaren Berechtigungen festgelegt?
YoMismo
@ Albert [root@bvdv-emmws01 home]# service crond status crond (pid 1910) is running...Ja, es läuft.
Tahir Akram