• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Cronjob mit anderer Umgebungsvariablen

jumanji

Member
Hallo Zusammen,

habe zwar einiges gefunden über Cronjobs, aber nicht wenn diese in einer anderen Umgebungsvaribalen laufen soll.

Ich habe hier ein Script welches als Cronjob laufen soll, dies geht aber nur in einer anderen Umgebungsvariablen. Es soll unter einem anderen Benutzer laufen, wie kriege ich das hin?

Ich habe crontab -e aufgerufen muss ich dann z.B.
5 4 * * * /bin/bash username /pfad/zum/script

oder

5 4 * * * /bin/bash su username /pfad/zum/script

Wie kriege ich das hin mit einer anderen Umgebungsvariablen. In Büchern habe ich darüber nichts gefunden.

Vielen Dank im Vorauf für die Hilfe.


Gruß,

jumanji
 
OP
jumanji

jumanji

Member
stka schrieb:
Du musst den cron-job unter der Benutzerkennung anlegen:
su - user
und ab gehts

Hi,

vielen Dank im Voraus für die Hilfe!!!!


Hmmm

also als user sozusagen einloggen, der für den der Cronjob ausgeführt werden soll :!: :?:

Ich hatte zumindest gedacht, dass auch in den Cronjob direkt geht, z.B. * * * * * /bin/bash su - user pfad zum script.
 
A

Anonymous

Gast
jumanji schrieb:
also als user sozusagen einloggen, der für den der Cronjob ausgeführt werden soll :!: :?:

Ich hatte zumindest gedacht, dass auch in den Cronjob direkt geht,

Also noch mal für alle.

Als User einlogen für den der Job ausgeführt werden soll.
dort die crontab anlegen oder ändern mit:
Code:
 crontab -e
das Format ist
* * * * * /PATH/ZUM/SCRIPT [OPTIONEN]
und wird beim verlassen des Editors auf grobe Fehler überprüft.
anschauen kann sich jeder user seine cronjobs mit
crontab -l

wer mit dem vi nicht klar kommt kann auch einen anderen Editor einstellen um seine crontab zu bearbeiten, dazu kann die Variable VISUAL oder EDITOR auf den anderen Editor gesetzt werden. zB. für den User der gerade die KDE geöffnet hat geht das so : xtermial öffenen und
Code:
export EDITOR=kwrite
crontab -e
Bei Cronjobs immer davon ausgehen, dass die Umgebungsvariablen nicht gesetzt sind (zB wird die /etc/profile nicht durchlaufen), deshalb am besten die vollen Pfade zu den Programmen und Dateien angeben und alle Variablen auf die ihr zugreifen wollt, vorher setzen ( außer natürlich $1-$.. $$ $* usw )

Es gibt auch eine /etc/crontab die kann nur root ändern. Hier ist das Format etwas anders, hier kann der User mit angegeben werden, doch Hände weg von dieser Datei, wenn ihr nicht 100% wisst was ihr da macht. Mit dieser Datei werden die Jobs der User konfiguriert die sich normalerweise nicht am System anmelden wie zB mail nobody lp man

sollte beim Aufruf von crontab -e folgende Fehlermeldung kommen
Code:
You (username) are not allowed to use this program (crontab)
Contact your sysadmin to change /var/spool/cron/allow or /var/spool/cron/deny
See crontab(1) for more information
ist für diesen Benutzer die Verwendung von cronjobs gesperrt.
Die Dateien mit denen das gesteuert wird sind /var/spool/cron/allow und /var/spool/cron/deny (in manchen Systemen eventuell auch /etc/cron.allow und /etc/cron.deny )

Alles was euer Cronjob normalerweise auf die Standardausgabe schreiben würdet, bekommt ihr automatisch als Mail zugeschickt, also auch eventuelle Fehlermeldungen. Wenn das nicht gewünscht wird, dann müsst ihr alles was ihr in den Mails nicht sehen wollt, nach /dev/null umbiegen. Auf der anderen Seite könnt ihr aber so auch einfach mit echo spezielle Status-Meldungen aus euren Scripten erzeugen, damit ihr in den Mails besser seht, wie euer Cronjob gelaufen ist.

siehe auch man crontab und man 5 crontab

robi
 
OP
jumanji

jumanji

Member
Hallo Robi,

danke für die auführliche Antwort und die Mühe :D

Das anlegen von cronjobs war nicht so das Problem, halt nur, wenn es unter einer bestimmten Benutzerumgebung laufen muss. War ich wohl in der falschen Annahme, das eine Option für Benutzerumgebung möglich ist.

thx,

jumanji
 
A

Anonymous

Gast
Wenn man es ganz streng nimmt dann läuft es unter gar keiner richtigen Umgebung, das einzige was der Cronjob kennt, ist die UID und die GID unter der er laufen soll, alles andere ist nicht gesetzt. Wenn du irgendwelche Umgebungsvariablen für das Cronjobscript setzten willst, dann musst du das in dem Script selbst vornehmen.
Zwar kann man in der crontab auch einige Variable setzten, die gelten dann aber für alle Jobs, und die USER Variable lässt sich hier sowieso nicht ändern. :wink:

robi
 
Oben