cron.xxx - Scripts mit .sh gehen nicht - Warum?

Alle weiteren Dienste, die nicht in die drei oberen Foren gehören.
Antworten
Benutzeravatar
theBube
Beiträge: 27
Registriert: 10.05.2004 22:12:54
Kontaktdaten:

cron.xxx - Scripts mit .sh gehen nicht - Warum?

Beitrag von theBube » 25.10.2004 18:11:27

Hallo zusammen,

experimentell habe ich festgestellt, das im cron.hourly und cron.daily Scripts mit der Endung .sh nicht ausgeführt werden. Erst hatte ich die Namenslänge in Verdacht, aber auch Dateien mit kürzerem Namen als 14 Zeichen (frühere Begrenzung) wurden nicht ausgeführt wenn ein .sh am Ende des Dateinamens war.
Wenn das .sh weg ist, wird das Script wunderbar ausgeführt.
Andere Probleme wie z.B. das !#/bin/sh vergessen (was der SuSE nichts ausmacht) oder +x nicht gesetzt, waren beachtet worden.

Weiss jemand warum das so ist? Hat .sh eine Sonderbedeutung oder sowas?

Greetz Bube

Edit: Ups, vergessen. Es handelt sich um eine Debian Sarge Installation.

Benutzeravatar
feltel
Webmaster
Beiträge: 10452
Registriert: 20.12.2001 13:08:23
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Leipzig, Germany
Kontaktdaten:

Beitrag von feltel » 25.10.2004 19:50:04

Das liegt an run-parts. run-parts ist ein Debian-Tool was es erlaubt mehrere Skriptteile in einem Verzeichnis kontrolliert auszuführen. run-parts wird von cron (in /etc/crontab) benutzt. Der Grund warum skript.sh nicht ausgeführt wird wird in der Manpage zu run-parts erklärt:
man run-parts hat geschrieben: run-parts runs all the executable files named within constraints
described below, found in directory directory. Other files and direc-
tories are silently ignored.

If the --lsbsysinit option is not given then the names must consist
entirely of upper and lower case letters, digits, underscores, and
hyphens.

If the --lsbsysinit option is given, then the names must not end in
.dpkg-old or .dpkg-dist and must belong to one or more of the follow-
ing namespaces: the LANANA-assigned namespace (^[a-z0-9]+$); the LSB
hierarchical and reserved namespaces (^_?([a-z0-9_.]+-)+[a-z0-9]+$);
and the Debian cron script namespace (^[a-z0-9][a-z0-9-]*$).
Will sagen der Punkt im Dateinamen und die Standardeinstellung das "--lsbsysinit" nicht gesetzt wird führte dazu das Dein Skript nicht ausgeführt wurde.

Antworten