Välkommen till linuxportalen.se!

Linuxportalen.se är Sveriges största och aktivaste webbplats för användare av öppen- och fri programvara.

Du besöker Linuxportalen.se som gäst vilket begränsar din möjlighet att använda webbplatsens alla funktioner. Genom att registera dig som medlem får du inte bara möjlighet att söka bland webbplatsens innehåll, skapa nya och delta i befintliga diskussioner, skapa din egen blogg, kommunicera med andra medlemmar genom privata meddelanden och delta i omröstningar. Du får också tillgång till Veckans Kadavro - en seriestrip unikt skapad för Linuxportalen.se!

Registeringen sker snabbt och är helt kostnadsfri - tveka inte, bli medlem idag!

Vad är det för fel???

#/bin/bash
cut -c19-23 /home/weather/clientraw.txt > /var/www/temperatur.txt

Dessa rader har länge fungerat och placerat temp på rätt ställe. Idag slutade det att fungera. om jag skriver sh (scriptnamnet) så hittas inte scriptet trots att jag står i samma bibliotek.

Men om jag kopierar ut cut - o.s.v. till terminalen och kör därifrån så är allt OK.

Filen är körbar och jag har rätt rättigheter. Denna fil körs av cron i vanliga fall.

Gissar att något ändrats när jag installerade fuse och owfs, eller rättare sagt alla tillbehör. Dessutom blir det fel när jag startar owfs. Då hittar systemet inte en textfil som ska läsas in. Kör jag detta script från terminalfönster så startar owfs men lägger till ett frågeteken efter namnen som ska skrivas i ett bilbiotek. Detta blir scaret jag får:

root@debian:~/script# sh smedbytemp
: not found: 4:
root@debian:~/script#
 

Låter nog rörigt det här... och det är det.

Alternativ för kommentarvisning

Välj ditt önskade sätt att visa kommentarerna och klicka på "Spara" för att verkställa dina ändringar.

pingus bild

Låt oss först bena upp detta lite:
* Scriptet du pratar om är alltså /script/smedbytemp ?
Och detta script innehåller 2 rader:
#/bin/bash
cut -c19-23 /home/weather/clientraw.txt > /var/www/temperatur.txt

Vad innehåller /home/weather/clientraw.txt ?
"... hittas inte scriptet.." skriver du, först, men sedan skriver du om ett svar du får - Så: hittas inte scriptet eller hittar inte scriptet filen clientraw.txt eller... ?

Du skriver också att något ändrades när du installerade /tillbehör till/ owfs. Om jag förstått rätt är owfs det program (eller snarare ramverk?) du scriptar för.
Så vad installerades, vad ändrades?

"Låter nog rörigt det här... och det är det."
Just, känns väldigt rörigt! Försök bena upp det - skriv ner tydligt exakt var filer ligger, vad de innehåller, hur de körs samt vad som installerades.
Skriv också hur din $PATH ser ut

Ett första tips är att skriva komplett sökväg i cron, en vanlig felkälla.

----------------------------
In Pingvino veritas!

http://www.tuxit.se
http://blogg.skuttungecity.se

snoopys bild

För ett dygn sedan kunde cron göra detta:

* * * * * /root/script/smedbytemp

som hämtar temperatur från en fil (clientraw.txt) som kommer från en väderstation. smedbytemp plockar fram utetemperaturen i filen som innehåller massor av andra uppgifter också. Temperaturen sparas i filen /var/www/temp/temperatur.txt där den sedan hämtas av andra.

Idag installerade jag OWFS, OneWireFileStsyem, för att logga andra uppgifter frå onewirenätet som använts tidigare av annan dator med samma OS, Debian Squeeze. Owfs kräver att man installerar FUSE som är en sorts filsystem. för det krävs dessa tillbehör;

libfuse-dev
libfuse2
automake
autoconf
autotools-dev
gcc
g++
libtool
swig
python2.6-dev
tcl8.4-dev
php5-dev
make
build-essential

för att kunna kompileras rätt. Efter detta kan cron inte längre hämta tempen som den gjort tidigare. Däremot om jag manuellt knappa in raderna i scriptet i terminalen och få temperaturen hämtad. Men som du ser så ska det ske varje minut. Känns lite jobbigt. Om jag ställer mig i scriptets katalog och skriver "sh smedbytemp" så får jag svaret;

root@debian:~/script# sh smedbytemp
: not found 4:
root@debian:~/script#

Om det är scriptet som inte hittas eller filen med väderdata har egentligen ingen betydelse. Scriptet och crontab innehåller hela sökvägarna.
Något av de installerade paketen verkar ha ställt till det.

Det är spritens fel att vi skjuter på svärmor..... och det är spritens fel att vi missar...

FoHs bild

Funkar "sh" då? Antar i så fall att det funkar via terminalen om du står i katalogen och lägger till ./ framför scriptfilen?

fredentofts bild

 Var ligger filen clientraw.txt? På ett "vanligt" filsystem eller monterat via fuse?
Om via fuse, vem har monterat (fuse har nämligen den lilla egenheten att bara den som monterar kan se filsystemet, ingen annan, inte ens root)?
Kan du ge exempel på hur filens innehåll ser ut?
 

-
För övrigt anser jag att trådindenteringen måste lagas
-
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

snoopys bild

sh fungerar när jag kör scriptets innehåll i terminalen. Då uppdateras uppgifterna på hemsidan. Men jag har ju annat att göra... ./ gör ingen skillnad heller.

Filen clientraw.txt ligger i /home/wd där den använts sedan Squeeze kom i förra datorn och det fungerade i denna tills jag installerade allt jox till owfs. Fuse används bara till owfs, inget annat och är ett virtuellt filsystem... typ. Försvinner om jag stänger av owfs.

Listan på programpaket jag skrev är inte komplett, den visar inte alla beroenden till de olika paketen. Vad som stör mig är att det har fungerat i förra datorn med owfs och allt sedan Debian Squeeze kom och jag bytte från Lenny.

Det är spritens fel att vi skjuter på svärmor..... och det är spritens fel att vi missar...

snoopys bild

Jag blev så frustrerad så jag installerade om hela disten idag. Nu fungerar mina simpla script. Client.raw plundras på data som skriv till /var/ww/temp/temperatur.txt m.fl. filer och alla är glada, men gladast är jag. Vågar inte tänka på 1wire-systemet på ett tag. Synd eftersom energimätaren finns med bland givarna.

Det är spritens fel att vi skjuter på svärmor..... och det är spritens fel att vi missar...