crontab

hutten
Inlägg: 9
Blev medlem: 29 jul 2006, 12:33
OS: Ubuntu
Utgåva: 10.04 Lucid LTS
Ort: Mörrum

crontab

Inlägg av hutten »

Hej,
Har skapat ett skalskript som bl.a startar ett perl-skript. Perl-skriptet hämtar lite filer på webben och sparar dessa i /var/www/..., vilket gör att jag måste köra skriptet som root p.g.a rättigheter. När jag lägger till skalskriptet för daglig körning i /etc/crontab kan jag ju köra skriptet som root, men det funkar inte ändå. Jag misstänker att det ha med perl-skriptet att göra? Någon som har en aning?
Skalskriptet funkar annars perfekt...

/hutten
Lars
Inlägg: 6191
Blev medlem: 14 jan 2007, 19:31
OS: Ubuntu
Utgåva: 22.10 Kinetic Kudu
Ort: Stockholm

SV: crontab

Inlägg av Lars »

Jag tror att PATH är ganska avskalad i crontab så du måste kanske köra /usr/bin/perl istället för bara perl.
hutten
Inlägg: 9
Blev medlem: 29 jul 2006, 12:33
OS: Ubuntu
Utgåva: 10.04 Lucid LTS
Ort: Mörrum

SV: crontab

Inlägg av hutten »

Du får gärna utveckla detta...
Menar du att jag ska ge hela sögvägen till perlskriptet i mitt skalskript?
Eller ska jag ange sökvägen till perl?

/hutten
Lars
Inlägg: 6191
Blev medlem: 14 jan 2007, 19:31
OS: Ubuntu
Utgåva: 22.10 Kinetic Kudu
Ort: Stockholm

SV: crontab

Inlägg av Lars »

Ange hela sökvägen till perlskriptet och se till att root har exeveringsrättigheter på filen (chmod o+x), skriv #!/usr/bin/perl överst i perl-skriptet. Det borde räcka tycker jag.
hutten
Inlägg: 9
Blev medlem: 29 jul 2006, 12:33
OS: Ubuntu
Utgåva: 10.04 Lucid LTS
Ort: Mörrum

SV: crontab

Inlägg av hutten »

Jag får inte till det...
Rättigheterna till mitt skalskript ser ok ut:

-rwxr-xr-x  1 root root    1 2007-01-28 21:46 get-xmltv

och ser ut enligt följande:

#!/bin/sh

datadir=/var/www/xmltv
offsetdays=10
offset=9

today="$(date +%Y%m%d)"
offsetdate=$(date -d "1970-01-01 $(($(date -d "${today}" "+%s") + $((60 * 60 * 24 * $offsetdays)))) sec" "+%Y%m%d")
datafile=tv-$offsetdate.xml
outputfile=$datadir/$datafile
echo "outputfile: $outputfile"

/usr/bin/tv_grab_se_swedb --quiet --days 1 --offset $offset --output $outputfile

echo "done!"


Början på perl-skriptet ser ut så här:

#!/usr/bin/perl -w

eval 'exec /usr/bin/perl -w -S $0 ${1+"$@"}'
    if 0; # not running under some shell


Och till sist /etc/crontab :

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 6 * * * root test -x /usr/sbin/anacron || run-parts --report /etc/cron.daily
47 6 * * 7 root test -x /usr/sbin/anacron || run-parts --report /etc/cron.weekly
52 6 1 * * root test -x /usr/sbin/anacron || run-parts --report /etc/cron.monthly
59 21  * * *  root    /usr/sbin/get-xmltv > /dev/null
#


Tips någon?

/hutten
hutten
Inlägg: 9
Blev medlem: 29 jul 2006, 12:33
OS: Ubuntu
Utgåva: 10.04 Lucid LTS
Ort: Mörrum

SV: crontab

Inlägg av hutten »

Nu - äntligen fick jag det att funka.  :D
Ändrade i /etc/crontab så att jag fick en logfil med vad som gick fel...
från
59 21  * * *  root    /usr/sbin/get-xmltv > /dev/null
till
59 21  * * *  root    /usr/sbin/get-xmltv > /tmp/cron.log 2>&1

/hutten
Skriv svar

Återgå till "Använda X/K/Ubuntu - inaktuell"