/ Forside / Teknologi / Operativsystemer / Linux / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Linux
#NavnPoint
o.v.n. 11177
peque 7911
dk 4814
e.c 2359
Uranus 1334
emesen 1334
stone47 1307
linuxrules 1214
Octon 1100
10  BjarneD 875
Script opfører sig anderledes som cronjob
Fra : Kristian Thy


Dato : 26-01-07 11:54

Ubuntu Server 6.06 LTS.

Har skrevet flg. lille script for at lave en natlig backup med tar og
kopiere den over på en ftp-server (har pt. ikke mulighed for rsync):

#!/bin/bash
d=`date +%Y%m%d%k%M`
tracdir=/tmp/trac_$d
f=/backup_$d.tar.bz2
rm /backup_*.tar.bz2
mkdir $tracdir
for p in $( ls /var/trac ); do
trac-admin /var/trac/$p hotcopy $tracdir/$p
done
tar cvpjf $f --exclude=/proc --exclude=/lost+found --exclude=$f
--exclude=/mnt --exclude=/sys /
ncftpput -u username -p password -r 5 -DD 256.256.256.256 Foo_Dir $f
rm -rf $tracdir

Det fungerer fint når jeg kører det manuelt - der ender en fil med et
navn som backup_200701261111.tar.bz2 på ca. 1,5GB på FTP-serveren.
Men når jeg smider det ind i /etc/cron.daily/ kan jeg om morgenen
konstatere at jeg har fået en fil der hedder backup_20070126 (jeps,
ingen extension) på ca. 2,5GB, hvilket matcher den ukomprimerede
størrelse af alle data på harddisken. Folderen tracdir mangler
ligeledes timer og minutter, og der bliver ikke lagt noget ind i den af
hotcopy. Hvor er min fejl 40?

\\kristian


 
 
Thomas S. Iversen (26-01-2007)
Kommentar
Fra : Thomas S. Iversen


Dato : 26-01-07 11:58

> Det fungerer fint når jeg kører det manuelt - der ender en fil med et

Hvem kører du det som?

> Men når jeg smider det ind i /etc/cron.daily/ kan jeg om morgenen

Hvem kører cron den som?

Thomas
--

Thorbjørn Ravn Ander~ (26-01-2007)
Kommentar
Fra : Thorbjørn Ravn Ander~


Dato : 26-01-07 12:04

"Kristian Thy" <thy@42.dk> writes:

> konstatere at jeg har fået en fil der hedder backup_20070126 (jeps,
> ingen extension) på ca. 2,5GB, hvilket matcher den ukomprimerede

I cronjobs er stien ikke sat. Du skal derfor angive dine stinavne (og
det er nok en GNU date du ser, og en ikke-GNU date cronjobbet ser)
--
Thorbjørn Ravn Andersen

Kristian Thy (26-01-2007)
Kommentar
Fra : Kristian Thy


Dato : 26-01-07 12:55

On Jan 26, 11:58 am, "Thomas S. Iversen" <zenso...@zensonic.dk> wrote:
> > Det fungerer fint når jeg kører det manuelt - der ender en fil med et
> Hvem kører du det som?

root

> > Men når jeg smider det ind i /etc/cron.daily/ kan jeg om morgenen
> Hvem kører cron den som?

Jeg var under den opfattelse af scriptsene i cron.daily, weekly etc
blev kørt som root, men jeg er usikker på hvordan jeg verificerer
det. Under alle omstændigheder har jeg automatisk opdatering af apt
kørende i cron.daily, og det har jeg aldrig haft problemer med, så
der må være root-priviligier. Men det er jo kun indicier.

\\kristian


Klaus Alexander Seis~ (26-01-2007)
Kommentar
Fra : Klaus Alexander Seis~


Dato : 26-01-07 16:29

Kristian Thy skrev:

> Jeg var under den opfattelse af scriptsene i cron.daily, weekly
> etc blev kørt som root, men jeg er usikker på hvordan jeg verifi-
> cerer det.

Hvis du er i tvivl, kan du lave et shellscript, fx:

#!/bin/sh

echo "I am $(who am i)"
echo "My ID is $(id)"

# eof

Mvh,

--
Klaus Alexander Seistrup
http://klaus.seistrup.dk/


Kristian Thy (26-01-2007)
Kommentar
Fra : Kristian Thy


Dato : 26-01-07 12:58

On Jan 26, 12:04 pm, nospam0...@gmail.com (Thorbjørn Ravn Andersen)
wrote:
> I cronjobs er stien ikke sat. Du skal derfor angive dine stinavne

Hvor? Så vidt jeg kan se er alle mine stier absolutte.

> (og det er nok en GNU date du ser, og en ikke-GNU date cronjobbet ser)

Det lyder som en ledetråd. For root:

# which date
/bin/date

Hvordan finder jeg den date-kommando cronjobbet kører?

\\kristian


Thorbjørn Ravn Ander~ (26-01-2007)
Kommentar
Fra : Thorbjørn Ravn Ander~


Dato : 26-01-07 13:10

"Kristian Thy" <thy@42.dk> writes:

> On Jan 26, 12:04 pm, nospam0...@gmail.com (Thorbjørn Ravn Andersen)
> wrote:
> > I cronjobs er stien ikke sat. Du skal derfor angive dine stinavne
>
> Hvor? Så vidt jeg kan se er alle mine stier absolutte.

Hvad er stinavnet til tar, date, rm osv osv?

>
> > (og det er nok en GNU date du ser, og en ikke-GNU date cronjobbet ser)
>
> Det lyder som en ledetråd. For root:
>
> # which date
> /bin/date
>
> Hvordan finder jeg den date-kommando cronjobbet kører?

echo `which date`

måske?

--
Thorbjørn Ravn Andersen

Kristian Thy (26-01-2007)
Kommentar
Fra : Kristian Thy


Dato : 26-01-07 13:31

On Jan 26, 1:10 pm, nospam0...@gmail.com (Thorbjørn Ravn Andersen)
wrote:
> > > I cronjobs er stien ikke sat. Du skal derfor angive dine stinavne
> > Hvor? Så vidt jeg kan se er alle mine stier absolutte.
> Hvad er stinavnet til tar, date, rm osv osv?

Oho, på den måde. Men den har jo godt kunne finde fx mkdir og
ncftpput - de står nemlig i path. I /etc/crontab ser jeg:

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user command
17 * * * * root run-parts --report /etc/cron.hourly
25 3 * * * root test -x /usr/sbin/anacron || run-parts --report
/etc/cron.daily
47 4 * * 7 root test -x /usr/sbin/anacron || run-parts --report
/etc/cron.weekly
52 5 1 * * root test -x /usr/sbin/anacron || run-parts --report
/etc/cron.monthly

Så fint nok, mine cronscripts bliver kørt som root. Men betyder
SHELL=/bin/sh at min shebang bliver overredet, eller er det den shell i
scriptet der får præcedens?

\\kristian


Kristian Thy (26-01-2007)
Kommentar
Fra : Kristian Thy


Dato : 26-01-07 14:36

On Jan 26, 12:04 pm, nospam0...@gmail.com (Thorbjørn Ravn Andersen)
wrote:
> (og det er nok en GNU date du ser, og en ikke-GNU date cronjobbet ser)

Jeps, d=`date +%Y%m%d` i stedet for d=`date +%Y%m%d%k%M` løste
problemet. Takker.

\\kristian


Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408926
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste