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
crontab
-
- Inlägg: 6191
- Blev medlem: 14 jan 2007, 19:31
- OS: Ubuntu
- Utgåva: 22.10 Kinetic Kudu
- Ort: Stockholm
SV: crontab
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.
SV: crontab
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
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
-
- Inlägg: 6191
- Blev medlem: 14 jan 2007, 19:31
- OS: Ubuntu
- Utgåva: 22.10 Kinetic Kudu
- Ort: Stockholm
SV: crontab
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.
SV: crontab
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
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
SV: crontab
Nu - äntligen fick jag det att funka. 
Ä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

Ä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