staging.inyokaproject.org

Skript alle 11 Stunden ausführen lassen [anacron?]

Status: Ungelöst | Ubuntu-Version: Ubuntu 14.04 (Trusty Tahr)
Antworten |

weildiezeit

Anmeldungsdatum:
6. März 2014

Beiträge: Zähle...

Hallo,

ich möchte ein Srkipt alle 11 Stunden ausführen lassen. Mein Computer ist aber nicht die ganze Zeit an; fährt er hoch und die letzte Ausführung ist mehr als 11 Stunden her, soll das Skript auch aus geführt werden. Deswegen habe ich an anacron gedacht.

Als ersten Schritt habe ich in /etc/cron.hourly/ einen symbolischen Link zu meinem Script erstellt:

$ ls -la /etc/cron.hourly/
total 24
drwxr-xr-x   2 root root  4096 Apr 24 11:27 .
drwxr-xr-x 148 root root 12288 Apr 24 11:30 ..
lrwxrwxrwx   1 root root    66 Apr 24 11:27 karma -> /home/x/y/script.sh
-rw-r--r--   1 root root   102 Feb  9  2013 .placeholder

Die Skripte in /etc/cron.hourly/ sollte eigentlich jede Stunde ausgeführt werden:

$ grep cron.hourly /var/log/syslog
Apr 24 10:17:01 x CRON[6215]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
Apr 24 11:17:01 x CRON[7909]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
Apr 24 12:17:01 x CRON[3824]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)

Allderdings habe ich eben nun auf 12:17 uhr gewartet, und das karma-Skript wurde nicht ausgeführt. Woran liegt das? Wenn ich es manuell ausführe klappt es. Und da der symbolische Link keinen Punkt enthält sollte das gehen, oder? Oder darf das Original-Skript auch keinen Punkt enthalten?

Im nächsten Schritt frage ich mich, wie es einstelle dass die Ausführung alle 11 Stunden geschieht?

Dem Wiki Eintrag konnte ich das nicht entnehmen.

$ cat /etc/anacrontab 
# /etc/anacrontab: configuration file for anacron

# See anacron(8) and anacrontab(5) for details.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
HOME=/root
LOGNAME=root

# These replace cron's entries
1	5	cron.daily	run-parts --report /etc/cron.daily
7	10	cron.weekly	run-parts --report /etc/cron.weekly
@monthly	15	cron.monthly	run-parts --report /etc/cron.monthly

Wieso ist hier nicht /etc/cron.hourly aufgeführt? Ich hätte vermutet, dass ich bei diesem Eintrag dann die Periode verändern muss (wobei die in Tagen angegeben ist?).

Ist das überhaupt möglich?

Viele Grüße weildiezeit

track

Avatar von track

Anmeldungsdatum:
26. Juni 2008

Beiträge: 7174

Muss es wirklich so eine krumme Stundenzahl sein ? - denn halbe Tage, und sonst klare Bruchteile der üblichen Zeiteinheiten sind kein Problem, aber solche täglich wechselnden Zeiten erfordern doch etwas Bastelei.

Ansonsten ist anacron schon der richtige Ansatz. Bei dem Link solltest Du außer den Rechten des Links auch die Rechte des Skripts selber ansehen, ob da nicht vielleicht was fehlt.

LG,

track

weildiezeit

(Themenstarter)

Anmeldungsdatum:
6. März 2014

Beiträge: Zähle...

track schrieb:

Muss es wirklich so eine krumme Stundenzahl sein ? - denn halbe Tage, und sonst klare Bruchteile der üblichen Zeiteinheiten sind kein Problem, aber solche täglich wechselnden Zeiten erfordern doch etwas Bastelei.

12 Stunden, also ein halber Tag, wäre auch ok 😉

Wie richte ich das ein? Muss ich

0.5	0	cron.hourly	run-parts --report /etc/cron.hourly

der /etc/anacrontab hinzufügen (0.5 wegen einem halben Tag?)? Ich habe mich wie gesagt gefragt, ob das der richtige Ort ist, da ja /etc/cron.hourly ausgeführt wird, aber die Ausführung nicht in dieser Datei spezifiziert ist?

Bei dem Link solltest Du außer den Rechten des Links auch die Rechte des Skripts selber ansehen, ob da nicht vielleicht was fehlt.

Meinst du das?:

$ ls -la
total 10200
drwxrwxr-x 2 x x     4096 Apr 24 12:22 .
drwxrwxr-x 7 x x     4096 Apr 23 20:18 ..
-rwxrwxr-x 1 x x      389 Apr 24 09:44 script.sh

Ich habe gerade mal den Punkt in script.sh entfernt, und schaue was bei der nächsten Stunde passiert.

track

Avatar von track

Anmeldungsdatum:
26. Juni 2008

Beiträge: 7174

weildiezeit schrieb:

12 Stunden, also ein halber Tag, wäre auch ok 😉

Wie richte ich das ein? Muss ich

0.5	0	cron.hourly	run-parts --report /etc/cron.hourly

Guckstu im Wiki :

Kürzere Perioden als täglich sind in anacrontab nicht einstellbar, dafür verwendet man Cron oder ab Ubuntu 14.04 das Anacronverzeichnis /etc/cron.hourly.

(sorry, da lag auch ich falsch !)

Also wird es entweder /etc/cron.hourly mit eigener Stundenverwaltung oder sowas in cron :

0     0,12     *     *     *    /home/x/y/script.sh

LG,

track

weildiezeit

(Themenstarter)

Anmeldungsdatum:
6. März 2014

Beiträge: 27

Bevor ich das schaffe möchte ich nun doch erstmal einen einfach cronjob zum Laufen bringen.

1
2
3
4
5
6
7
8
$ crontab -l
SHELL=/bin/bash
# PATH variable for cron
PATH=/usr/local/bin:/usr/local/sbin:/sbin:/usr/sbin:/bin:/usr/bin:/usr/bin/X11
#M   S     T M W   Befehl
#-----------------------------------------------------------------
* * * * * /home/x/script.sh
#-----------------------------------------------------------------

Das Skript wird von cron anscheinend jede Minute gestartet:

$ grep CRON /var/log/syslog | tail -n 2
Apr 24 16:38:01 x CRON[10658]: (x) CMD (/home/x/script.sh)
Apr 24 16:39:01 x CRON[10658]: (x) CMD (/home/x/script.sh)

Aber es scheint bei der Ausführung Probleme zu geben, denn es tut sich nichts. Hier das Skript:

$ cat script.sh 
#!/bin/bash
/usr/bin/gnome-terminal -e "/bin/bash" --geometry=200x30

Führe ich es manuell aus, öffnet sich ein neues Terminal.

Mit dem $PATH sollte es doch keine Probleme geben, da der Befehl für das gnome-terminal mit Pfadangabe ist, oder?

EDIT: Mit folgendem Skript geht es:

#!/bin/bash                                                                     
echo "hallo" >> /home/x/aaa 

Warum wird ersteres Skript von cron nicht ausgeführt, das zweite aber schon?

Edit: Die Fehlernachricht die beim zweiten Skript auf stderr geschrieben wird lautet:

error: XDG_RUNTIME_DIR not set in the environment. Failed to parse arguments: Cannot open display:

track

Avatar von track

Anmeldungsdatum:
26. Juni 2008

Beiträge: 7174

Ganz einfach: dem gnome-terminal fehlen die Umgebungsvariablen des X-Servers !

Lass Dir doch die Fehlermeldung mal anzeigen mit

#!/bin/bash

/usr/bin/gnome-terminal -e "/bin/bash" --geometry=200x30  2>> /home/x/aaa 

LG,

track

Antworten |