Crontabs richtig einsetzen

Baracuda

New Member
Hallo,

Ich habe bei 1blu einen vServer mit Debian 3.1 / Plesk 8.1.1 und möchte ein Programm zeitgesteuert ausführen bzw. stoppen.

Einmal ein Programm welches jeden Tag zu den Zeiten startet/stoppt.
Und einmal ein Cronjob der nur einmalig ausgeführt wird, der also um 15:50 das Programm stoppt, aber um 16:50 dieses wieder startet, nicht jeden Tag sondern einmalig.

Leider kenne ich mich in Sachen Cronjobs nicht aus, und wende mich deshalb an euch.

Ich bedanke mich im Voraus für Hilfe.

Mit freundlichen Grüßen
Jörg C.
 
Einmal ein Programm welches jeden Tag zu den Zeiten startet/stoppt.
Du musst einfach die Beschreibung deines Jobs in die crontab des betreffenden Benutzers schreiben. Die crontab des Benutzers kannst du mit `crontab -e` bearbeiten, die systemweite crontab findest du unter /etc/crontab. Das Format wird in der zugehörigen Manpage erklärt, die du mit `man 5 crontab` aufrufen kannst.

Und einmal ein Cronjob der nur einmalig ausgeführt wird, der also um 15:50 das Programm stoppt, aber um 16:50 dieses wieder startet, nicht jeden Tag sondern einmalig.
Das ist keine Aufgabe für Cron, sondern für At (`man atd`, ggf. musst du das erst nachinstallieren).
 
Hallo,

Das mit dem einmaligen Cron hat sich bereits erledigt.

Zum anderen Cron, diesen konnte ich erfolgreich einfügen.
Allerdings nur bis zum Funktionstest.

Der Cron beendet zwar die Programme zur Angegeben Minute, aber startet sie nicht.

Die Crons die ich eingebaut habe sehen folgend aus:
Code:
0 * * * * /home/shoutcast/Autostream/automatic.sh stop
5 * * * * /home/shoutcast/Autostream/automatic.sh start
0 * * * * /home/shoutcast/Infoschaltung/schaltung.sh start
5 * * * * /home/shoutcast/Infoschaltung/schaltung.sh stop

Die .sh-Dateien sind beide jeweils fast identisch, es ändert sich lediglich sc_music in sc_info

Die .sh-Datei sieht folgend aus:
Code:
#!/bin/bash

case "$1" in
start)
./sc_music
;;
stop)
killall sc_music
;;
esac

exit 0

Die manuelle Ausführung der .sh-Dateien bringt das gewünschte Ergebnis, so sind diese also am funktionieren.
Einen Fehler sehe ich allerdings auch nicht im Cronjob denn dieser ist nach Anleitung eigentlich auch richtig geschrieben.

Wo steckt hier also der Wurm drin?

Mit freundlichen Gruß
Jörg C.
 
Last edited by a moderator:
In Skripten, bei denen du dir über die Environmentvariablen nicht sicher sein kannst, immer den vollständigen Pfad zu allen Dateien angeben.
 
Wie soll ich denn den Pfad vor die ./sc_music bekommen, da dies der Ausführungsbefehl für den Prozess ist. Der Prozess selbst hat keine Funktion die starten kann.

Und im Crontab ist der komplette Pfad angegeben.
 
Also
Code:
0 * * * * /home/shoutcast/Autostream/automatic.sh stop
5 * * * * /home/shoutcast/Autostream/automatic.sh start
0 * * * * /home/shoutcast/Infoschaltung/schaltung.sh start
5 * * * * /home/shoutcast/Infoschaltung/schaltung.sh stop

zu dem hier machen

Code:
0 * * * * /home/shoutcast/Autostream/automatic.sh stop
5 * * * * /home/shoutcast/Autostream/sc_music
0 * * * * /home/shoutcast/Infoschaltung/sc_info
5 * * * * /home/shoutcast/Infoschaltung/schaltung.sh stop

Oder in der .sh einstellen?
 
Wie sehen die Skripte aus? Wie lautet die Ausgabe von `ls -l /home/shoutcast/{Infoschaltung,Autostream}/sc_music`?

Warum muss man dir eigentlich jede Information aus der Nase ziehen?
 
Warum muss man dir eigentlich jede Information aus der Nase ziehen?

Ich habe noch nie mit Cronjobs gearbeitet.

Die ls -l geben folgendes aus

Code:
-rwxrwxrwx  1 root staff 799828 Mar  4  2003 /home/shoutcast/Infoschaltung/sc_info

Code:
-rwxrwxrwx  1 root staff 799828 Mar  4  2003 /home/shoutcast/Autostream/sc_music
 
Da steh ich jetzt vor einem Baum. Ich kann nicht weiter folgen

Also fehlt da sicherlich irgendwas nehme ich mal an, wie mach ich das mit dem x-Bit und den Eintragungen?
 
Dann stimmt etwas mit den Pfaden noch nicht. Außerdem wertest du keine Rückgaben der Programme aus. Du könntest mindestens in der crontab mit `MAILTO=deine@email.tld` in der ersten Zeile die Ausgabe zuschicken lassen.
 
Back
Top