← Back to team overview

sslug-teknik team mailing list archive

Re: variabler i crontab

 

Der er noget pivegalt i crons måde at fungere på og/eller Jeres forventninger til det og/eller brugen af det.

Min cron fungerer efter det klassiske UNIX-princip med én crontab pr. bruger, i denne crontab kan der stå one-liners, og her bruger jeg `kommando` i flæng med det forventede resultat. Jeg har dog godt nok den mistanke at denne cron er en af de "forbedrede" varianter, som ikke følger den traditionelle UNIX standard for hvordan cronf funegerer. Klaus K's klagesang fortæller os, at problemet grundlæggende ikke er, om variablen DATE bliver sat, men at den får værdien "/bin/date....." - med andre ord at date kommandoen opfattes som en streng istedet for som et kald.

Lad os se de involverede filer i deres helhed. Og lige høre hvilken Linux-distribution/cron-variant, du bruger, Klaus!

MVH

Jón


Frank Larsen wrote:
Hej

Lav et script der sætter diverse variabler:

DATE=`/bin/date -d yesterday +%Y%m%d`
export DATE
I scriptet der skal bruge disse variabler:

echo "Før kald"
echo $DATE
. ./test.sh
echo "Efter kald"
echo $DATE

Disse variabler er kun kendt for det kaldende script og bliver nulstillet så
snart det er færdig med at køre.

Denne måde at kalde scripts der sætter variabler fungerer uden problemer på
SLES 7.0, Sun Solaris 8 & 9 samt System V ver. 4.2
Jeg har vist også haft det kørende på RH 6.2

Med venlig hilsen

Frank Larsen
KIMIK IT
PO Box 740		Mailto:fl@xxxxxxxxxxx
DK-3900 Nuuk	Phone: +299 34 20 00
Greenland		Fax:   +299 32 98 30
Visit			http://www.kimik-it.gl


-----Oprindelig meddelelse-----
Fra: Frank Larsen [mailto:FL@xxxxxxxxxxx]
Sendt: 8. januar 2003 10:19
Til: 'sslug-teknik@xxxxxxxx'
Emne: SV: [TEKNIK] variabler i crontab


Hej

Det er en god ide at export DATE

Dog vil en export DATE ikke hjælpe særligt meget hvis der er andre
cron-scripts der er afhængig af variablen.
For hver gang man kører et cron-script, vil dette blive afviklet i et
selvstændigt miljø, det ikke kender noget til variabler sat af andre
scripts.

Du kan emulere dette ved i en command-line:

DATE=`/bin/date -d yesterday +%Y%m%d`
export DATE
echo $DATE (20030107)
su
echo $DATE (20030107)
su - root
echo $DATE (intet)

Med venlig hilsen

Frank Larsen
KIMIK IT
PO Box 740		Mailto:fl@xxxxxxxxxxx
DK-3900 Nuuk	Phone: +299 34 20 00
Greenland		Fax:   +299 32 98 30
Visit			http://www.kimik-it.gl


-----Oprindelig meddelelse-----
Fra: Klavs Klavsen [mailto:kl@xxxxxxx]
Sendt: 8. januar 2003 10:02
Til: sslug-teknik@xxxxxxxx
Emne: [TEKNIK] variabler i crontab



Jeg forsøger at få sat en variabel DATE i min crontab
(/etc/cron.d/stats).

# load date from yesterday - as logfile contents is from before now :-)
DATE=`/bin/date -d yesterday +%Y%m%d`

men når jeg bruger variablen senere hen, så er indholdet bare
/bin/date.. :(

hvis jeg prøver præcis samme linie (copy and pasted) i test.sh - så
virker det fint.

Nogen ideer? eller bliver jeg nødt til at lave et wrapper script der
kalder kommandoen?



====================================================================
                               | ACE - UNIX/Linux Consultancy
                               | Hjorthoejvej 2 / DK-4291 Ruds Vedby
mail: jon@xxxxxx               | DENMARK
http://www.ace.dk              | +45 5826 1799 / +45 4052 0799
====================================================================



Follow ups

References