/ 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
Problemer med at hjemmelavet baggrunds pro~
Fra : News


Dato : 15-08-05 14:50

Jeg har nedenstående BASH script (my_script.sh). Scriptet henter data ud fra
min Soekris router via SNMP og indsætter det i en MySQL database:

/my_script.sh:

first_run=1

while [ 1 -eq 1 ]; do

snmp_get=`/usr/local/bin/snmpget -v2c -Oqvt -c public 192.168.1.1
system.sysUpTime.0 interfaces.ifTable.ifEntry.ifOutOctets.2`

uptime_secs=`echo $snmp_get | /usr/bin/awk '{print $1}'`
bytes_total=`echo $snmp_get | /usr/bin/awk '{print $2}'`

if [ $first_run -eq 0 ]; then
uptime_diff=`echo "scale=2; ($uptime_secs - $uptime_last) / 100" |
/usr/bin/bc`
bytes_diff=$[ $bytes_total - $bytes_last ]
bytes_sec=`echo "scale=0; $bytes_diff / $uptime_diff" | /usr/bin/bc`

if [ -n $uptime_secs -a -n $bytes_total ]; then
echo `/bin/date | /usr/bin/awk '{print $4}'`, "Uptime: $uptime_secs,
Total bytes: $bytes_total, Diff secs: $uptime_diff, Bytes diff: $bytes_diff,
Byte
/usr/local/bin/curl --silent
http://localhost/?counter=84\&var=$bytes_sec > /dev/null
fi

fi

uptime_last=$uptime_secs
bytes_last=$bytes_total
first_run=0

sleep 1

done

----

Mit problem er, at hvis jeg køre dette script som en baggrunds process
(./my_script.sh &), så dør processen efter noget tid. Der kan gå 5 minutter
eller der kan gå en time, men den dør altid efter en tid. Hvorfor gør den
det? Er der nogen der kan se en fejl eller gør jeg det grundlæggende forkert
med at køre det i en evig løkke og så starte det som en baggrunds process?

Det er ikke nok, at køre den fra crontab, da den så kun bliver kørt en gang
i minuttet og jeg vil gerne have data opsamlet en gang i sekundet.



 
 
Mogens Kjaer (15-08-2005)
Kommentar
Fra : Mogens Kjaer


Dato : 15-08-05 16:35

News wrote:
....
> Mit problem er, at hvis jeg køre dette script som en baggrunds process
> (./my_script.sh &), så dør processen efter noget tid. Der kan gå 5 minutter
> eller der kan gå en time, men den dør altid efter en tid. Hvorfor gør den
> det? Er der nogen der kan se en fejl eller gør jeg det grundlæggende forkert
> med at køre det i en evig løkke og så starte det som en baggrunds process?

Prøv at starte scriptet med:

nohup ./my_script.sh >my_script.log 2>&1 &

så dør det ikke, når du logger ud.

Du kan skrive

set -x

i starten af scriptet, så skriver hver kommando,
efterhånden som de udføres, så kan du se, hvor
det går galt - hvis ikke nohup hjalp.

Mogens

--
Mogens Kjær, Dataarkæolog
Email: mk@datamuseum.dk
Homepage: http://www.datamuseum.dk

News (15-08-2005)
Kommentar
Fra : News


Dato : 15-08-05 17:40

>> Mit problem er, at hvis jeg køre dette script som en baggrunds process
>> (./my_script.sh &), så dør processen efter noget tid. Der kan gå 5
>> minutter eller der kan gå en time, men den dør altid efter en tid.
>> Hvorfor gør den det? Er der nogen der kan se en fejl eller gør jeg det
>> grundlæggende forkert med at køre det i en evig løkke og så starte det
>> som en baggrunds process?
>
> Prøv at starte scriptet med:
> nohup ./my_script.sh >my_script.log 2>&1 &

Tidligere skrev jeg blot "./my_script.sh | tee my_script.log &" og så
afsluttede min terminal og loggede ind på ny, da den ellers fylder skærmen
med info. Det her er meget bedre, tak.

> så dør det ikke, når du logger ud.

Det har den nu heller ikke gjort tidligere. Jeg har jo kunne logge ud og så
ind igen og så kunne jeg se i min logfil, at den stadigt appendede til
logfilen.

> Du kan skrive
> set -x
> i starten af scriptet, så skriver hver kommando,
> efterhånden som de udføres, så kan du se, hvor
> det går galt - hvis ikke nohup hjalp.

Perfekt, tak igen. Det er god information til debug.

Jeg tror dog måske-måske, at jeg har fundet fejlen. Jeg testede løkken
igennem uden delay og uden snmp fetch. Der fejlede den ikke, så jeg
mistænker lidt min SNMP daemon for at gå i kage pga. den korte delay imellem
hvert kald (hvert sekund). Jeg har nu nedsat frekvensen til hvert 5. sekund
og indtil videre ser det ud til at køre fint, men nu må jeg se.

Tak for ino - det kan bruges fremover



Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408527
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste