Müssen cronjob Unterskripteskripte absoluten Pfad besitzen?

NTDY

Erfahrenes Mitglied
Müssen cronjob Unterskripteskripte absoluten Pfad besitzen?

Ich rufe in meinem cron ein perl Skript auf, das jeden Tag Aufgaben wie Datenbankbackup, Quotacheck, Log Datei Auswertung usw. übernimmt.

Code:
30      6       *       *       *    /usr/bin/perl /root/skripte/mainscript.pl

Innerhalb dieser Perl Datei werden andere Unterskripte aufgerufen. Eines davon wird beispielsweise mit

Code:
system("/usr/bin/php5 /root/skripte/unterskripte/sendemail.php test@muster.de");

Innerhalb dieser sendemail.php Datei rufe ich eine Datei "datum.txt" auf, die ausgelesen werden soll. Diese Datei "datum.txt" befindet sich unter /root/skripte/.
Wenn ich diese Datei innerhalb von sendemail.php als relativen Pfad aufrufe, funktioniert das Skript nicht, sendemail.php findet diese Datei nicht. Wenn ich die Datei jedoch als absoluten Pfad aufrufe, funktioniert diese.

Relative Pfade, die getestet wurden:
Code:
"datum.txt"
"../datum.txt"
"./datum.txt"
"/datum.txt"

Absoluter Pfad, der funktioniert
Code:
"/root/skripte/datum.txt"

Kann mir jemand sagen, wie diese Phänomen zustande kommt? Brauchen alle Skripte, sowie Unterskripte, die von cron abgearbeitet werden immer absolute Pfade, oder ist meine Skriptidee falsch?
 
Kann mir jemand sagen, wie diese Phänomen zustande kommt? Brauchen alle Skripte, sowie Unterskripte, die von cron abgearbeitet werden immer absolute Pfade, oder ist meine Skriptidee falsch?
Warum "Phänomen"? Relative Pfade sind relativ zum Arbeitsverzeichnis wo das Programm gestartet wurde. Das Arbeitsverzeichnis kann man intern im Programm mit chdir ändern.

Standardmäßig werden cron-Jobs im HOME Verzeichnis des Benutzers gestartet der den Job eingerichtet hat. Wenn du es als root einrichtest, folglich in /root. D.h. mit einem relativen Pfad skripte/datum.txt sollte es funktionieren. Du kannst natürlich auch in cron explizit ein HOME Verzeichnis mit der HOME Variablen angeben.
Relative Pfade, die getestet wurden:
Code:
"datum.txt"
"../datum.txt"
"./datum.txt"
"/datum.txt"
/datum.txt ist kein relativer Pfad.

Gruß
 
Zurück