Sida 1 av 2
Symlink problem tillsammans med Cron
Postat: 18 sep 2010, 20:00
av CirruZZ
Jag har ett ytterst skumt problem som gäller en symlink tillsammans med cron. jag har skappat en symlink enligt...
Kod: Markera allt
sudo ln -s /opt/rrdtool-1.4.4/bin/rrdtool /usr/local/bin/rrdtool
syftet med länken är att slippa skriva sökvägen till rrdtool varje gång. Det funkar utmärkt i bash. Jag har en del script som körs med hjälp av cron och i dom skripten så används rrdtool för att uppdatera några rrd-filer.
Om jag kör scripten själv i bash så funkar dom, rrd-filerna uppdateras som dom ska. MEN, när scripten körs via cron så funkar det inte! Jag har testat att ändra i scripten så att hela sökvägen finns till rrdtool och DÅ funkar det. Dvs något fel är det med min symlink.
Cron uppgifterna ligger för användaren root. Jag kan köra scripten i bash både via vanlig användare och via root (sudo) med gott resultat, men med cron för root vill det sig inte.
Jag hittar inge fel i /var/log/syslog men jag ser att cron jobben går som dom ska.
Tipps någon?
Re: Symlink problem tillsammans med Cron
Postat: 18 sep 2010, 20:23
av Dowser
Om du i samma script som triggas från cron adderar raden
echo $PATH >/var/tmp/slasknamn.log
Ingår /usr/local/bin/ i den pathen?
Re: Symlink problem tillsammans med Cron
Postat: 18 sep 2010, 20:26
av Dowser
En sak till, blir det samma problem om du använder en hård länk istället för en symbolisk?
Re: Symlink problem tillsammans med Cron
Postat: 18 sep 2010, 20:52
av CirruZZ
ska kolla...
jag har under tiden sedan jag skrev googlat och även postat på ubuntu-se och också kommit fram till att det har med $PATH för cron att göra...
Tydligen skall man kunna
lägga till fler $PATH för cron i själva cronfilen, testar det just nu, återstår att se om det funkar.
Re: Symlink problem tillsammans med Cron
Postat: 18 sep 2010, 21:04
av CirruZZ
Det funkade nu! Det konstiga är att i tidigare versioner av ubuntu så har jag inte behövt lägga till fler $PATH för att få det att funka, nu kör jag 10.04.
Re: Symlink problem tillsammans med Cron
Postat: 18 sep 2010, 21:15
av Dowser
Misstänkte att det var det som var felet.
Tja, $PATH är ju inget mer magiskt än en variabel, så den kan du sätta precis var du vill. Se bara till att den hämtar informationen från rätt ställe, så att du inte sitter med föråldrad information i cron jämfört med omgivningen nån gång i framtiden. Det kan bli klurigt att felsöka...

Re: Symlink problem tillsammans med Cron
Postat: 18 sep 2010, 21:25
av CirruZZ
Dowser skrev:...Se bara till att den hämtar informationen från rätt ställe, så att du inte sitter med föråldrad information i cron jämfört med omgivningen nån gång i framtiden. Det kan bli klurigt att felsöka...

Hur menar du då?
Re: Symlink problem tillsammans med Cron
Postat: 18 sep 2010, 21:35
av Dowser
Jag menar om inte använder dig av PATH-variabeln från /etc/environment utan använder någon egen konstruktion så kommer du förr eller senare sitta med två olika PATH-variabler, vilket kan leda till "intressanta" följder när du *vet* att en viss fil används, men cron plockar en annan.

Re: Symlink problem tillsammans med Cron
Postat: 18 sep 2010, 22:18
av CirruZZ
ska inte vara några konstigheter...tror jag...det jag la till i min cron var
Kod: Markera allt
PATH=/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/bin
Re: Symlink problem tillsammans med Cron
Postat: 18 sep 2010, 22:53
av Dowser
Den skulle jag förvisso ändra den till
Kod: Markera allt
PATH=/usr/sbin:/usr/local/bin:/usr/bin:/sbin:/bin
Local-pather vill du oftast ha före "centrala". Dvs, om du har egen version av en binär som även finns i dist'en så vill du troligtvis använda din egen version i första hand.
Men problemet med den lösningen (när du inte tar input från /etc/environment) är om du någon gång i framtiden adderar något i /etc/environment's path och förväntar dig att den skall vara aktiv även när du kör i cron. Men det problemet uppstår inte förrän du glömt denna diskussion ordentligt.

Re: Symlink problem tillsammans med Cron
Postat: 18 sep 2010, 23:03
av CirruZZ
men det är ju just det som är problemet...tror jag...att cron körs inte med den inställningen (/etc/environment) och därför måste jag lägga till det i cron, då det kommer ju ändå bli ett problem om jag ändrar i /etc/environment i framtiden oavsett

Re: Symlink problem tillsammans med Cron
Postat: 18 sep 2010, 23:19
av Dowser
Inte om du använder /etc/environment som input till din egen åtgärd.
Re: Symlink problem tillsammans med Cron
Postat: 19 sep 2010, 09:24
av CirruZZ
Kan man det!

Hur gör jag då? Nu står det ju...
Kod: Markera allt
PATH=/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/bin
...längst upp i min cron. Vad skall jag skriva i stället?
Re: Symlink problem tillsammans med Cron
Postat: 19 sep 2010, 21:40
av Dowser
Inte längst uppe i din cron va?
Antar att du menar längst uppe i ditt script som anropas av cron?
Ersätt den raden med:
så bör du bli nöjd och glad, även om något/några år när du ändrar pather.

Re: Symlink problem tillsammans med Cron
Postat: 19 sep 2010, 22:45
av CirruZZ
Dowser skrev:Inte längst uppe i din cron va?
...
Jo, som jag skrev tidigare...
Det funkar toppen.