Shell mittels cronjob ausführen

Status
Für weitere Antworten geschlossen.

madrix

Benutzer
Mitglied seit
21. Mrz 2011
Beiträge
455
Punkte für Reaktionen
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?
 

dil88

Benutzer
Contributor
Sehr erfahren
Mitglied seit
03. Sep 2012
Beiträge
30.693
Punkte für Reaktionen
2.100
Punkte
829
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.
 

madrix

Benutzer
Mitglied seit
21. Mrz 2011
Beiträge
455
Punkte für Reaktionen
0
Punkte
16

luddi

Benutzer
Sehr erfahren
Mitglied seit
05. Sep 2012
Beiträge
3.259
Punkte für Reaktionen
601
Punkte
174
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/ &
 

madrix

Benutzer
Mitglied seit
21. Mrz 2011
Beiträge
455
Punkte für Reaktionen
0
Punkte
16

dil88

Benutzer
Contributor
Sehr erfahren
Mitglied seit
03. Sep 2012
Beiträge
30.693
Punkte für Reaktionen
2.100
Punkte
829
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:

madrix

Benutzer
Mitglied seit
21. Mrz 2011
Beiträge
455
Punkte für Reaktionen
0
Punkte
16
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
 

dil88

Benutzer
Contributor
Sehr erfahren
Mitglied seit
03. Sep 2012
Beiträge
30.693
Punkte für Reaktionen
2.100
Punkte
829
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.
 

Merthos

Benutzer
Mitglied seit
01. Mai 2010
Beiträge
2.709
Punkte für Reaktionen
2
Punkte
84
Doch, kann man. Man braucht keine Shell, wenn man ein Programm direkt aufruft, halt nur die Pfade immer komplett angeben.
 

madrix

Benutzer
Mitglied seit
21. Mrz 2011
Beiträge
455
Punkte für Reaktionen
0
Punkte
16
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?
 

dil88

Benutzer
Contributor
Sehr erfahren
Mitglied seit
03. Sep 2012
Beiträge
30.693
Punkte für Reaktionen
2.100
Punkte
829
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.
 

madrix

Benutzer
Mitglied seit
21. Mrz 2011
Beiträge
455
Punkte für Reaktionen
0
Punkte
16
ok, dann stand ich auf dem Schlauch. Wie dem auch sei. Heute Abend probier ich es weiter.
 

madrix

Benutzer
Mitglied seit
21. Mrz 2011
Beiträge
455
Punkte für Reaktionen
0
Punkte
16
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
 

Merthos

Benutzer
Mitglied seit
01. Mai 2010
Beiträge
2.709
Punkte für Reaktionen
2
Punkte
84
Cron neu gestartet?
 

madrix

Benutzer
Mitglied seit
21. Mrz 2011
Beiträge
455
Punkte für Reaktionen
0
Punkte
16
mit

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

ist das der richtige Befehl?
 

dil88

Benutzer
Contributor
Sehr erfahren
Mitglied seit
03. Sep 2012
Beiträge
30.693
Punkte für Reaktionen
2.100
Punkte
829
Probiere es einmal mit

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

madrix

Benutzer
Mitglied seit
21. Mrz 2011
Beiträge
455
Punkte für Reaktionen
0
Punkte
16
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