Shell mittels cronjob ausführen

  • Ab sofort steht euch hier im Forum die neue Add-on Verwaltung zur Verfügung – eine zentrale Plattform für alles rund um Erweiterungen und Add-ons für den DSM.

    Damit haben wir einen Ort, an dem Lösungen von Nutzern mit der Community geteilt werden können. Über die Team Funktion können Projekte auch gemeinsam gepflegt werden.

    Was die Add-on Verwaltung kann und wie es funktioniert findet Ihr hier

    Hier geht es zu den Add-ons

Status
Für weitere Antworten geschlossen.

madrix

Benutzer
Registriert
21. März 2011
Beiträge
455
Reaktionspunkte
0
Punkte
16
das steht in der crontab

Rich (BBCode):
45      17      *       *       5       root    /volume1/Musik/Webradio/stream.sh

Und so sieht die Datei aus

Rich (BBCode):
!/bin/bash
streamripper http://85.239.108.1/sunshinelive-mp3-128 -l 60 -d /volume1/Musik/Webradio/ &

PS: Natürlich habe ich die cron vor 17:45 angelegt und restart crond ausgeführt - aber nix :(

was mach ich falsch?
 
Die Shelleinbindung in der ersten Zeile (shebang) ist nicht korrekt. Richtig ist "#!/bin/sh" (ohne Anführungsstriche). Und da der cron die Skripte direkt ohne Umgebung ausführt, musst Du den Pfad zum Programm "streamripper" ergänzen. Den crond brauchst Du übrigens m.W. nicht zu restarten. Alternativ die PATH-Variable im Skript definieren.
 
Verstehe, wie muss das dann aussehen?

Du müsstest nun folgendes haben...
Rich (BBCode):
#!/bin/sh
streamripper http://85.239.108.1/sunshinelive-mp3-128 -l 60 -d /volume1/Musik/Webradio/ &

Was dil88 meint ist, dass du für die binary "streamripper" den kompletten Pfad angibst.
Du solltest wissen wo die binary auf deinem System liegt.

z.B. könnte der Aufruf dann folgendermaßen aussehen.

Rich (BBCode):
/usr/bin/streamripper http://85.239.108.1/sunshinelive-mp3-128 -l 60 -d /volume1/Musik/Webradio/ &

oder....

/volume1/.../.../.../streamripper http://85.239.108.1/sunshinelive-mp3-128 -l 60 -d /volume1/Musik/Webradio/ &
 
Hast Du das ausprobiert? Ein direkter Aufruf per Shell sähe so aus

Rich (BBCode):
/bin/sh /usr/bin/streamripper http://85.239.108.1/sunshinelive-mp3-128 -l 60 -d /volume1/Musik/Webradio/ &

Ohne Shell m.W. kein Programmstart. Edit: Falsch - siehe #9.
 
Zuletzt bearbeitet:
Wenn ich Shell manuell ausführe reicht das:

Rich (BBCode):
streamripper http://85.239.108.1/sunshinelive-mp3-128 -l 60 -d /volume1/Musik/Webradio/

Aber wenn ich das in die crontab schreibe, wird doch die Shell gar nicht aufgerufen:

Rich (BBCode):
/usr/bin/streamripper http://85.239.108.1/sunshinelive-mp3-128 -l 60 -d /volume1/Musik/Webradio/ &

PS: Ich meine, wenn ich alles in die cron schreibe (Ort der bin + Parameter) kann ich mir die Shell doch sparen
 
Nein, kannst Du nicht. Die Shell hat mit dem Pfad nichts zu tun. Dafür gibt es die Environmentvariable PATH, über die es ermöglicht wird, auf die Angabe des Pfades zu verzichten. Die Shell bietet Kommandos und startet u.a. Programme, das ist ihr Job. Wenn Du den Code in einer Shell ausführst, dann befindest Du Dich bereits in einer Shellumgebung und nutzt die Möglichkeiten der Shell automatisch. PATH ist dann i.d.R. auch konfiguriert. All dies ist bei einem Cron-Aufruf nicht gegeben. Dort muss die Shell erst noch aufgerufen werden.
 
Doch, kann man. Man braucht keine Shell, wenn man ein Programm direkt aufruft, halt nur die Pfade immer komplett angeben.
 
in der Shell steht das:

Rich (BBCode):
/usr/bin/streamripper http://85.239.108.1/sunshinelive-mp3-128 -l 60 -d /volume1/Musik/Webradio/ &

Die Shell heißt meinetwegen stream.sh

Wenn ich das in die crontab schreibe:

Rich (BBCode):
/usr/bin/streamripper http://85.239.108.1/sunshinelive-mp3-128 -l 60 -d /volume1/Musik/Webradio/ &

dann wird doch stream.sh nirgends aufgerufen?

Oder stehe ich gerade auf dem Schlauch?
 
stream.sh ist ein Shell-Skript, keine Shell.

Ansonsten hat Merthos recht und ich nicht. Wenn man ein Shell-Skript aus dem Cron startet, wird eine Shell gestartet. Ein direkter Programmaufruf geht ohne Shell.
 
ok, dann stand ich auf dem Schlauch. Wie dem auch sei. Heute Abend probier ich es weiter.
 
Rich (BBCode):
/opt/bin/streamripper http://85.239.108.1/sunshinelive-mp3-128 -l 60 -d /volume1/Musik/Webradio/

Das in der Kommandozeile geht wunderbar, aber genau dasselbe in der crontab geht nicht.

Rich (BBCode):
26      17      *       *       1       root    /opt/bin/streamripper http://85.239.108.1/sunshinelive-mp3-128 -l 60 -d /volume1/Musik/Webradio
 
Cron neu gestartet?
 
mit

/usr/syno/sbin/synoservicectl --restart crond

ist das der richtige Befehl?
 
Probiere es einmal mit

Rich (BBCode):
/usr/syno/sbin/synoservice --restart crond
 
Rich (BBCode):
23      18      *       *       1       root    mkdir /volume1/Musik/Webradio/Test

das geht, auch mit

Rich (BBCode):
/usr/syno/sbin/synoservicectl --restart crond

sinnlos ...

PS: Asche auf mein Haupt :(

In der Cron stand

Rich (BBCode):
26      17      *       *       1       root    /opt/bin/streamripper http://85.239.108.1/sunshinelive-mp3-128 -l 60 -d /volume1/Musik/Webradio & &

Also 2mal und - bitte nicht hauen
 
Zuletzt bearbeitet:
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat