Bash-Script verhält sich als CronJob anders

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
MKay
Beiträge: 13
Registriert: 20.10.2009 21:31:35

Bash-Script verhält sich als CronJob anders

Beitrag von MKay » 20.10.2009 22:13:21

Hi,

ich habe ein Bash-Skript geschrieben, welches bei manueller Ausführung problemlos funktioniert.
Starte ich das Script jedoch über einen CronJob arbeitet es komplett anders.

Die Befehle, die dabei Probleme machen sind grep und sed, Beispiel:

Code: Alles auswählen

/bin/grep -i -v '^\s'
Mit diesem Code möchte ich eigentlich alle Zeilen auslesen, die nicht mit einem Tab beginnen. Offenbar stört er sich aber an dem '\s', wenn das Script per CronJob ausgeführt wird. Ersetze ich dieses durch ein echtes Tab, funktioniert das soweit.
Allerdings machen dann die sed-Befehle im Skript Probleme. Die sind aber sehr lang, weshalb ich da eigentlich nichts ändern möchte und stattdessen einen Weg suche, dass das Script so funktioniert, wie wenn ich es manuell ausführe.

Ich habe bereits ewig lang gegoogelt, doch keine Lösung gefunden. Versucht habe ich bisher folgendes:
  • Anpassen von PATH und SHELL innerhalb der crontab
  • Einbinden der .profile-Datei mittels: . "$HOME/.profile"
  • Das Script beginnt logischerweise mit #!/bin/sh und hat ausführbare Rechte
  • Als Befehl in der Crontab habe ich explizit /bin/bash und /bin/sh angegeben
Doch das Skript lief weiterhin anders als geplant.
Weiss jemand woran das liegen kann, bzw. wie man das Problem lösen kann ohne das Script anpassen zu müssen? Denn eigentlich funktioniert es ja :)

Gruss,
MKay

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Re: Bash-Script verhält sich als CronJob anders

Beitrag von gms » 20.10.2009 23:14:09

Willkommen im Forum!
MKay hat geschrieben: Mit diesem Code möchte ich eigentlich alle Zeilen auslesen, die nicht mit einem Tab beginnen. Offenbar stört er sich aber an dem '\s', wenn das Script per CronJob ausgeführt wird. .
wundert mich eigentlich nicht, laut Doku wird \s nicht unterstützt:
http://www.gnu.org/software/grep/manual ... xpressions

die "-i" Option solltest du hier auch nicht benötigen, versuche daher einmal:

Code: Alles auswählen

/bin/grep -v '^[[:space:]]'
Gruß
gms

MKay
Beiträge: 13
Registriert: 20.10.2009 21:31:35

Re: Bash-Script verhält sich als CronJob anders

Beitrag von MKay » 21.10.2009 09:57:57

Hi,

ok, ich wundere mich nur, warum es funktioniert, wenn ich es per Hand starte.
Naja, ich habe den grep entsprechend angepasst und die sed's nun auch verändert. Jetzt funktioniert es.

Ich finde es trotzdem komisch, dass beim manuellen Ausführen alles problemlos lief 8O

Gruss,
MKay

chrisbra
Beiträge: 122
Registriert: 19.10.2005 09:36:09
Wohnort: Sachsen-Anhalt
Kontaktdaten:

Re: Bash-Script verhält sich als CronJob anders

Beitrag von chrisbra » 21.10.2009 11:06:05

MKay hat geschrieben:Ich finde es trotzdem komisch, dass beim manuellen Ausführen alles problemlos lief 8O
Irgendwelche Umgebungsvariablen gesetzt, die das Verhalten von grep/sed beeinflußt haben, würde ich vermuten.
Meine Whishlist
:wq!

Benutzeravatar
brill
Beiträge: 354
Registriert: 04.02.2005 10:37:34
Lizenz eigener Beiträge: GNU General Public License

Re: Bash-Script verhält sich als CronJob anders

Beitrag von brill » 21.10.2009 11:35:21

laufen den beide Test mit dem gleichen user?

Brill

MKay
Beiträge: 13
Registriert: 20.10.2009 21:31:35

Re: Bash-Script verhält sich als CronJob anders

Beitrag von MKay » 21.10.2009 14:59:36

chrisbra hat geschrieben:Irgendwelche Umgebungsvariablen gesetzt, die das Verhalten von grep/sed beeinflußt haben, würde ich vermuten.
Habe ich auch vermutet und entsprechend die env-Ausgabe in eine Datei umgeleitet. Da waren auch ein paar Sachen anders, die ich dann explizit im Skript gesetzt habe. Allerdings hat auch das nicht funktioniert.
brill hat geschrieben:laufen den beide Test mit dem gleichen user?
Jop.

Antworten