Cron Job wird nicht ausgeführt

Status
Für weitere Antworten geschlossen.

banshe

Benutzer
Mitglied seit
14. Jan 2012
Beiträge
19
Punkte für Reaktionen
0
Punkte
0
Hallo zusammen

Ich habe mal wieder eine Frage:
Ich habe ein Script erstellt und möchte dass dieses jeden Tag um 23:00Uhr ausgeführt wird.

Das Script hat die CHMOD rechte auf 777
Das Logfile, in welches das Script schreibt hat auch CHMOD 777

Die crontab Datei habe ich als root angepasst - ich habe zu oberst eine neue Zeile eingefügt:

Rich (BBCode):
#minute    hour    mday    month    wday    who    command
0          23      *       *        *       root   sh /volume1/Ordner/Ordner/Ordner/script.sh

Der Shebang ist im Script definiert
Rich (BBCode):
#!/bin/sh

Und crond habe ich auch schon neu gestartet
Rich (BBCode):
/usr/syno/etc/rc.d/S04crond.sh stop
/usr/syno/etc/rc.d/S04crond.sh start

Ich bin gerade etwas ratlos...
Kann es sein dass das Script nicht ausgeführt wird, weil die Harddisks nach 20min in den Standby gehen und um 23:00Uhr im Standby sind?


Gruss
banshe
 

Matthieu

Benutzer
Mitglied seit
03. Nov 2008
Beiträge
13.222
Punkte für Reaktionen
88
Punkte
344
Nimm mal das "sh" vor dem Kommando weg oder probier es mal mit dem gesamtem Pfad zu sh ("which sh").
Sind die Trennungen im Crontab mit Tabulator gemacht?

MfG Matthieu
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
ohne dein script.php zu kennen würde ich mal darauf tippen, dass du im Script jeweils nicht komplette Pfadangaben zu den Kommandos hast. cron hat einen andere PATH als die Konsole d.h. man kann ein Script manuell auf der Konsole ausführen, aber cron kann es dann trotzdem ned
 

banshe

Benutzer
Mitglied seit
14. Jan 2012
Beiträge
19
Punkte für Reaktionen
0
Punkte
0
Sind die Trennungen im Crontab mit Tabulator gemacht?

Ja, habe die Trennungen mit dem Tabulator gemacht...


ohne dein script.php zu kennen würde ich mal darauf tippen, dass du im Script jeweils nicht komplette Pfadangaben zu den Kommandos hast. cron hat einen andere PATH als die Konsole d.h. man kann ein Script manuell auf der Konsole ausführen, aber cron kann es dann trotzdem ned

Hmm... eigentlich nicht.
Mein MINI Script.sh (nicht script.php):

Rich (BBCode):
#!/bin/sh
>> log1.log echo "$(date +%Y-%m-%d)" "`df -h | grep /volume1 | awk '{print $1}' | sed 's/.$//'`" "`df -h | grep /volume1 | awk '{print $2}' | sed 's/.$//'`" "`df -h | grep /volume1 | awk '{print $3}' | sed 's/.$//'`" "`df -h | grep /volume1 | awk '{print $4}' | sed 's/.$//'`"
>> log1.log echo
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
ich sehe da aber alle Kommandos ohne komplette Pfadangaben ;-)
 

banshe

Benutzer
Mitglied seit
14. Jan 2012
Beiträge
19
Punkte für Reaktionen
0
Punkte
0
ich sehe da aber alle Kommandos ohne komplette Pfadangaben ;-)

Oww .. Pfadangaben zu den Kommandos... :eek:
Wie muss ich dies denn genau bewerkstelligen?

Wie und wo definiere ich dies? Mach ich das für wiederholenden Kommandos in eine Variable?


Danke euch
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
mittels which CMD findest du den kompletten Pfad zum Kommando. Dann bei jedem anpassen oder den Pfad in eine Var und dann bei den Kommandos voranstellen. Oder den PATH von cron überschreiben. Dazu auf der Konsole mal echo $PATH machen und den Output speichern. Dann in deinem Script gleich nach der Shebang
Code:
export PATH=PATH_AUS_DEINEM_OUTPUT
 

banshe

Benutzer
Mitglied seit
14. Jan 2012
Beiträge
19
Punkte für Reaktionen
0
Punkte
0
mittels which CMD findest du den kompletten Pfad zum Kommando. Dann bei jedem anpassen oder den Pfad in eine Var und dann bei den Kommandos voranstellen. Oder den PATH von cron überschreiben. Dazu auf der Konsole mal echo $PATH machen und den Output speichern. Dann in deinem Script gleich nach der Shebang
Code:
export PATH=PATH_AUS_DEINEM_OUTPUT

Hilfe...

- Hab jetzt alle Pfade angegeben..
- Crond neu gestartet

Funktioniert nicht... wenn ich das Script manuell starte, gehts weiterhin... also habe ich bei den Pfaden nichts verbockt...

Cond-Datei (Habe die Uhrzeit für den Testzweck jeweils 2min ins Vorraus gestellt):
Rich (BBCode):
#minute hour    mday    month   wday    who     command
27      8       *       *       *       root    /bin/sh /volume1/ORDNER/ORDNER/ORDNER/auswertung.sh

Script:
Rich (BBCode):
#!/bin/sh
>> /volume1/ORDNER/ORDNER/ORDNER/log1.log /bin/echo "$(/bin/date +%Y-%m-%d)" "`/bin/df -h | /bin/grep /volume1 | /usr/bin/awk '{print $1}' | /bin/sed 's/.$//'`" "`/bin/df -h | /bin/grep /volume1 | /usr/bin/awk '{print $2}' | /bin/sed 's/.$//'`" "`/bin/df -h | /bin/grep /volume1 | /usr/bin/awk '{print $3}' | /bin/sed 's/.$//'`" "`/bin/df -h | /bin/grep /volume1 | /usr/bin/awk '{print $4}' | /bin/sed 's/.$//'`"
>> /volume1/ORDNER/ORDNER/ORDNER/log1.log /bin/echo


Wo mache ich den Fehler?

Herzliche Grüsse
banshe
 

Benares

Benutzer
Sehr erfahren
Mitglied seit
27. Sep 2008
Beiträge
12.008
Punkte für Reaktionen
2.701
Punkte
423
jahlives meinte, dass du den Pfad innerhalb deines Scripts neu setzt, also etwa so
Code:
#!/bin/sh
export PATH=PATH_AUS_DEINEM_OUTPUT
...
Dann brauchst du keine Pfadangabe bei den einzelnen Befehlen mehr.

Gruß Benares
 

banshe

Benutzer
Mitglied seit
14. Jan 2012
Beiträge
19
Punkte für Reaktionen
0
Punkte
0
Hallo zusammen

Soweit ich gestern spät Abends gesehen habe, funktioniert der Cronjob nun...
Der Fehler war im Speicherpfad zum Logfile... :D

Habe aktuell die Pfadangaben zu den einzelnen Befehlen noch belassen... --> Never touch a running system <-- =D

Danke euch!
 

alfonso

Benutzer
Mitglied seit
17. Dez 2008
Beiträge
89
Punkte für Reaktionen
0
Punkte
0
ich habe ein ganz ähnliches problem:

im telnet funktioniert das script, aber in der crontab geht es nicht.
Code:
#!/bin/sh
#
cd /Volume1/web/backup/
cat dbbackup.ftp | lftp -u user,pw -p 21 forum.de/html/backup/

Rich (BBCode):
#minute    hour    mday    month    wday    who    command
0          20      *       *        *       root   /volume1/web/backup/dbbackup.sh

wer weiß rat und kann mir helfen?
 

Benares

Benutzer
Sehr erfahren
Mitglied seit
27. Sep 2008
Beiträge
12.008
Punkte für Reaktionen
2.701
Punkte
423
wer weiß rat und kann mir helfen?
Das übliche halt. Übernimm mal noch die Zeilen "PATH=..." und "export PATH" aus der /etc/profile mit in dein Script.
Edit: Ausserdem ist das große V bei Volume1 bestimmt falsch.

Gruß Benares
 
Zuletzt bearbeitet:

alfonso

Benutzer
Mitglied seit
17. Dez 2008
Beiträge
89
Punkte für Reaktionen
0
Punkte
0
wie müsste das script dann aussehen?

so hier:

Rich (BBCode):
#!/bin/sh

export PATH=cd /volume1/web/backup/
 

MaCoM

Benutzer
Mitglied seit
06. Dez 2009
Beiträge
347
Punkte für Reaktionen
0
Punkte
0

MaCoM

Benutzer
Mitglied seit
06. Dez 2009
Beiträge
347
Punkte für Reaktionen
0
Punkte
0
ich versteh es so das du die 2 zeilen in dein skript einbauen solltest

#!/bin/sh
#
PATH=<inhalt aus deiner /etc/profile>
export PATH
cd /Volume1/web/backup/
cat dbbackup.ftp | lftp -u user,pw -p 21 forum.de/html/backup/

weil cron dies skript in einer eigenen umgebung ausfürt.
 

alfonso

Benutzer
Mitglied seit
17. Dez 2008
Beiträge
89
Punkte für Reaktionen
0
Punkte
0
so gerade mal getestet, leider kommt immer noch eine blöde fehlermeldung:

Feb 27 12:03:01 crond: USER root pid 22730 cmd /volume1/web/backup/dbbackup.sh
/bin/sh: /volume1/web/backup/dbbackup.sh: not found

mein script sieht nun wie folgt aus:
Rich (BBCode):
#!/bin/sh
#
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/syno/sbin:/usr/syno/bin:/usr/local/sbin:/usr/local/bin
export PATH

cd /volume1/web/backup/
cat dbbackup.ftp | lftp -u db,pw -p 21 forum.de/html/backup/
 

Benares

Benutzer
Sehr erfahren
Mitglied seit
27. Sep 2008
Beiträge
12.008
Punkte für Reaktionen
2.701
Punkte
423
Ausführrechte sitzen?
Code:
chmod 755 /volume1/web/backup/dbbackup.sh
Gruß Benares
 

alfonso

Benutzer
Mitglied seit
17. Dez 2008
Beiträge
89
Punkte für Reaktionen
0
Punkte
0
ich habe es gerade mit filezilla überprüft cmod ist auf 777.
 

Benares

Benutzer
Sehr erfahren
Mitglied seit
27. Sep 2008
Beiträge
12.008
Punkte für Reaktionen
2.701
Punkte
423
und das Script ist mit einem Unix-fähigen Editor erstellt? (kein ^M am Zeilenende im vi)
 
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