On Tue, 24 Feb 2004, Thilo Gramlich wrote:
Hallo!
Zuerst mal eine Anmerkung zu Deinen Antworten: ich bekomme Sie immer doppelt, einmal direkt und einmal über die Liste. Einmal reicht mir vollkommen ...
Sorry für die doppelte Mail!
Am Dienstag, 24. Februar 2004 10:36 schrieb Matthias Dort:
[Schnipp]
Mein urspruengliches Ziel ist aber, eine Variable in der Shell-Umgebung auch dem cron-Prozess bekannt zu machen.
Frage: braucht cron diese Variable, um zu laufen? Ich behaupte mal, nein. Also sollte cron diese Variable auch nicht kennen.
Nein. cron daemon braucht diese Variable nicht und lehnt hartnaeckig ab, diese von Shell zu übernehmen.
Die Variable ist für die Programme von Interesse, die der cron aufruft. Also setze sie auch nur dort, am besten eben via source <filename>.
Wie gesagt, man kann diese explizite Wertzuweisung auch direkt in das Skript bzw. in die crontab schreiben.
Wenn es sich jetzt um eine Variable handelt, deren Wert sich von Zeit zu Zeit ändert (z.B. als Ergbnis eines Programmes/Skripts), dann sorge eben dafür, daß der Wert in der Datei geändert wird, die von den anderen per source gelesen wird. Ja. Aber cron übernimmt nicht eine ihm unbekannte Shell-Variable. Die Variable, die cron nicht kennt, muss explizit neu gesetzt werden, entweder im Skript, das cron ausführt, oder in der crontab, oder in einer Datei <file> in Verbindung mit `source <file>`. Allerdings wenn man eine Variable in dieser Weise explizit setzt, ist sie eine völlig neue Variable und hat leider nicht mehr mit der Shell-Variable zu tun!
Das Problem beim Ändern der Umgebung von Programmen wie cron liegt darin, daß man sich Seiteneffekte einhandeln kann (. Ich habe mir eben mal schnell die manpage und den Aufruf in der /etc/rc.d/cron angesehen; es wird keine Datei genannt, mit der man die Umgebung des cron alleine beeinflussen kann. Es ist also vom Autor auch garnicht gewollt, daß man die Umgebung ändert.
In meinem Job kommt es häufiger vor, daß ich für ein Skript eine Umgebung brauche, die für die Benutzer-Shell schon gesetzt ist, aber für meine Skripte, die z.B. beim Starten des Rechners, vom cron oder von unserer Applikation angestoßen werden, eben nicht zur Verfügung steht. Dann wird eben aus der entsprechenden Konfigurationsdatei der entsprechende Teil so ausgelagert, daß er für mehrere Skripte per source zur Verfügung steht.
[Schnipp]
Das funktioniert leider nicht. Es scheint mir so, was shell kennt (in shell-env), cron aber nicht kennt (nicht in cron-env), lernt cron nicht kennen. Es sei denn, dass man die Variablenzuweisung in crontab schreibt.
Wenn Du in der Shell-Umgebung eine Variable per Skript dauerhaft setzen möchtest, dann geschieht das üblicherweise per
Nein. Eben nicht dauerhaft. Sonst könnte ich in crontab schreiben: export var=<konstant> Sondern der Wert ändert sich, und zwar oft, zeitlich unregelmäßig. Unter Shell wird dies dynamisch, automatisch behandelt.
EXPORT VAR=VALUE
Cron scheint solch eine Möglichkeit nicht zu bieten. Warum auch, was cron an Variablen braucht, kennt es. Um den Rest soll sich bitte das jeweilige Programm / Skript selber kümmern.
Dann gibt es wahrscheinlich nur eine Lösung, dass ich die Variablen-Zuweisung immer wieder per Hand ändere. Schönen Dank, Thilo! peter
Thilo -- ------------------------------------------------------------------------------------ Thilo Gramlich Thilo (a dot) Gramlich (an at symbol) aktivanet (a dot) de
-- Um die Liste abzubestellen, schicken Sie eine Mail an: suse-linux-unsubscribe@suse.com Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: suse-linux-help@suse.com