|
| shell script der kører i løkke går ned Fra : Michael |
Dato : 05-03-04 19:32 |
|
Har et lille script
/root/script.sh:
#!/bin/sh
/usr/bin/php /home/scripts/doit.php
sleep 10;
/root/scripts.sh
Jeg starter 2 forskellige der er næsten ens. Det mærkelige er at scriptene
dør efter en periode på omkring 8-12 timer.
Hvad kan det skyldes?
Er der nogen bedre alternativer at gøre det på? Istedet for at løre mit PHP
script i en løkke, ville jeg gerne genstarte det for at undgå memory leaks
m.m.
Nogen der kan hjælpe?
--
mvh
| |
FePe (05-03-2004)
| Kommentar Fra : FePe |
Dato : 05-03-04 20:01 |
|
Michael wrote:
> Har et lille script
>
> /root/script.sh:
>
> #!/bin/sh
> /usr/bin/php /home/scripts/doit.php
> sleep 10;
> /root/scripts.sh
>
> Jeg starter 2 forskellige der er næsten ens. Det mærkelige er at scriptene
> dør efter en periode på omkring 8-12 timer.
>
> Hvad kan det skyldes?
>
> Er der nogen bedre alternativer at gøre det på? Istedet for at løre mit PHP
> script i en løkke, ville jeg gerne genstarte det for at undgå memory leaks
> m.m.
>
> Nogen der kan hjælpe?
Hvorfor vil du køre programmet igen og igen? Hvis du vil have programmet i en
løkke, så er det nok bedre at rykke ud til en løkke i kommandolinjen; så undgår
du (så vidt jeg ved) memory leaks.
Mvh. FePe.
--
Lægerne anbefaler: at man ser mindst 14 timers Simpsons hver dag.
| |
Klaus Ellegaard (05-03-2004)
| Kommentar Fra : Klaus Ellegaard |
Dato : 05-03-04 20:39 |
|
FePe <fepe@SLETtiscali.dk> writes:
>Hvorfor vil du køre programmet igen og igen? Hvis du vil have programmet i en
>løkke, så er det nok bedre at rykke ud til en løkke i kommandolinjen; så undgår
>du (så vidt jeg ved) memory leaks.
Snæh... hvorfor skulle det gøre nogen forskel? Fortolkningen er
100% den samme.
Mvh.
Klaus.
| |
Klaus Ellegaard (05-03-2004)
| Kommentar Fra : Klaus Ellegaard |
Dato : 05-03-04 20:38 |
|
"Michael" <maskinen2000@hotmail.com> writes:
>Jeg starter 2 forskellige der er næsten ens. Det mærkelige er at scriptene
>dør efter en periode på omkring 8-12 timer.
>Hvad kan det skyldes?
Du løber tør for stack space. Når du kører et program i et program,
svarer det til at lave en GOSUB i BASIC.
>Er der nogen bedre alternativer at gøre det på?
while sleep 10
do
/root/whatnot/script.sh
done
Det virker, fordi "sleep 10" vil returnere 0 (TRUE), når den er
færdig med at vente. Samtidig er det en ren løkke. Der er ikke
noget, der bliver tilføjet til stakken hele tiden.
Mvh.
Klaus.
| |
Michael (05-03-2004)
| Kommentar Fra : Michael |
Dato : 05-03-04 21:13 |
|
"Klaus Ellegaard" <klausellegaard@msn.com> skrev i en meddelelse
news:c2akuq$mao$1@news.klen.dk...
> >Hvad kan det skyldes?
>
> Du løber tør for stack space. Når du kører et program i et program,
> svarer det til at lave en GOSUB i BASIC.
ok tak. prøver jeres alternativ, så må jeg se om det giver mig en rolig
nattesøvn :)
--
Mvh
| |
Niels Elgaard Larsen (05-03-2004)
| Kommentar Fra : Niels Elgaard Larsen |
Dato : 05-03-04 22:37 |
|
Klaus Ellegaard wrote:
>>Er der nogen bedre alternativer at gøre det på?
>
> while sleep 10
> do
> /root/whatnot/script.sh
> done
>
> Det virker, fordi "sleep 10" vil returnere 0 (TRUE), når den er
> færdig med at vente.
Men ikke hvis den stopper pga et signal.
Det er nok bedre at bruge en "while true .."
> Samtidig er det en ren løkke. Der er ikke
> noget, der bliver tilføjet til stakken hele tiden.
--
Niels Elgaard Larsen
http://www.agol.dk/elgaard
| |
Klaus Ellegaard (05-03-2004)
| Kommentar Fra : Klaus Ellegaard |
Dato : 05-03-04 22:48 |
|
Niels Elgaard Larsen <elgaard@diku.dk> writes:
>> Det virker, fordi "sleep 10" vil returnere 0 (TRUE), når den er
>> færdig med at vente.
>Men ikke hvis den stopper pga et signal.
Præcis - nem måde at stoppe skidtet kontrolleret.
Mvh.
Klaus.
| |
Adam Sjøgren (05-03-2004)
| Kommentar Fra : Adam Sjøgren |
Dato : 05-03-04 20:44 |
|
On Fri, 5 Mar 2004 19:32:10 +0100, Michael wrote:
> Har et lille script /root/script.sh:
> #!/bin/sh
> /usr/bin/php /home/scripts/doit.php
> sleep 10;
> /root/scripts.sh
Jeg går ud fra at scriptet kalder sig selv (på trods at s'et)?
Dvs. du har et script, som kalder et script, som kalder et script, som
kalder et script etc. etc. etc. - men ingen af dem afsluttes
nogensinde!
/root/script.sh
+- /root/script.sh
+- /root/script.sh
etc.
etc.
etc.
etc
Det er ikke så holdbart i længden.
Prøv:
#!/bin/sh
while ((1)); do
/usr/bin/php /home/scripts/doit.php
sleep 10;
done
Eller læs crontab(5).
> Er der nogen bedre alternativer at gøre det på? Istedet for at løre
> mit PHP script i en løkke, ville jeg gerne genstarte det for at
> undgå memory leaks m.m.
Ahva?
Mvh.
--
"Mr. Cotton's... parrot. Same question." Adam Sjøgren
asjo@koldfront.dk
| |
Michael (05-03-2004)
| Kommentar Fra : Michael |
Dato : 05-03-04 21:48 |
|
"Adam Sjøgren" <spamtrap@koldfront.dk> skrev i en meddelelse
news:87wu5z13l8.fsf@virgil.koldfront.dk...
> #!/bin/sh
>
> while ((1)); do
> /usr/bin/php /home/scripts/doit.php
> sleep 10;
> done
Prøvede ovenstående. Ser ud til at det lukker, hvis jeg lukker min ssh
forbindelse ned. Kan det være korrekt?
--
Mvh
| |
Adam Sjøgren (05-03-2004)
| Kommentar Fra : Adam Sjøgren |
Dato : 05-03-04 21:52 |
|
On Fri, 5 Mar 2004 21:47:56 +0100, Michael wrote:
>> while ((1)); do /usr/bin/php /home/scripts/doit.php sleep 10; done
> Prøvede ovenstående. Ser ud til at det lukker, hvis jeg lukker min
> ssh forbindelse ned. Kan det være korrekt?
Sikkert. Se nohup(1).
Eller crontab(5).
Mvh.
--
"Mr. Cotton's... parrot. Same question." Adam Sjøgren
asjo@koldfront.dk
| |
Niels Callesøe (05-03-2004)
| Kommentar Fra : Niels Callesøe |
Dato : 05-03-04 21:58 |
|
Adam Sjøgren wrote in <news:871xo710gw.fsf@virgil.koldfront.dk>:
>>> while ((1)); do /usr/bin/php /home/scripts/doit.php sleep 10; done
>
>> Prøvede ovenstående. Ser ud til at det lukker, hvis jeg lukker min
>> ssh forbindelse ned. Kan det være korrekt?
>
> Sikkert. Se nohup(1).
>
> Eller crontab(5).
Eller supervise fra daemontools (selvom det måske er overkill).
--
Niels Callesøe - dk pfy @work
pfy[at]nntp.dk - http://www.pcpower.dk/disclaimer.php
Learn Postfix; live Postfix; love Postfix.
| |
Peter Jensen (05-03-2004)
| Kommentar Fra : Peter Jensen |
Dato : 05-03-04 23:13 |
|
Niels Callesøe wrote:
>>> Prøvede ovenstående. Ser ud til at det lukker, hvis jeg lukker min
>>> ssh forbindelse ned. Kan det være korrekt?
>>
>> Sikkert. Se nohup(1).
>>
>> Eller crontab(5).
>
> Eller supervise fra daemontools (selvom det måske er overkill).
Eller screen(1).
--
PeKaJe
I just had a NOSE JOB!!
| |
Peter Makholm (06-03-2004)
| Kommentar Fra : Peter Makholm |
Dato : 06-03-04 06:37 |
|
Peter Jensen <usenet@pekajemaps.homeip.net> writes:
> Eller screen(1).
Screen er et sejt program og jeg kunne ikke leve uden det, men jeg
synes at screen har fået lidt for stor udbredelse som universalløsning
på alle mulige problemer.
Screen skal bruges hvis man vil kunne detatche og reatatche
interaktive programmer eller man vil multiplekse flere terminaler over
en forbindelse. Bare at bruge screen fordi man ikke kan finde ud af at
køre et program i baggrunden er overkill.
--
Peter Makholm | What if:
peter@makholm.net | IBM bought Xenix from Microsoft instead of buying
http://hacking.dk | DOS?
| |
Michael Zedeler (08-03-2004)
| Kommentar Fra : Michael Zedeler |
Dato : 08-03-04 19:04 |
|
Adam Sjøgren wrote:
> On Fri, 5 Mar 2004 19:32:10 +0100, Michael wrote:
>
>>Har et lille script /root/script.sh:
> [klip]
>
> Dvs. du har et script, som kalder et script, som kalder et script, som
> kalder et script etc. etc. etc. - men ingen af dem afsluttes
> nogensinde!
>
> /root/script.sh
> +- /root/script.sh
> +- /root/script.sh
> etc.
> etc.
> etc.
> etc
>
> Det er ikke så holdbart i længden.
Advarsel: fjollet og potentielt farligt.
En anden og hurtigere metode til at få sin computer til at gå ned:
perl -e 'fork() while true'
LAD VÆRE MED AT KØRE DEN med mindre du vil have din computer til at gå
ned med et brag.
M.
| |
Kent Friis (08-03-2004)
| Kommentar Fra : Kent Friis |
Dato : 08-03-04 19:37 |
|
Den Mon, 08 Mar 2004 19:04:07 +0100 skrev Michael Zedeler:
>Adam Sjøgren wrote:
>
>> On Fri, 5 Mar 2004 19:32:10 +0100, Michael wrote:
>>
>>>Har et lille script /root/script.sh:
>> [klip]
>>
>> Dvs. du har et script, som kalder et script, som kalder et script, som
>> kalder et script etc. etc. etc. - men ingen af dem afsluttes
>> nogensinde!
>>
>> /root/script.sh
>> +- /root/script.sh
>> +- /root/script.sh
>> etc.
>> etc.
>> etc.
>> etc
>>
>> Det er ikke så holdbart i længden.
>
>Advarsel: fjollet og potentielt farligt.
>
>En anden og hurtigere metode til at få sin computer til at gå ned:
>
>perl -e 'fork() while true'
>
>LAD VÆRE MED AT KØRE DEN med mindre du vil have din computer til at gå
>ned med et brag.
Det brag var sg* mindre end sidst jeg tabte en fjer ned over tærene.
X virkede godt nok død, og det tog et halvt minuts tid at logge ind
fra en anden terminal, men da jeg ikke gad vente længere (og maskinen
var holdt op med at swappe, så der så ikke ud til at ske det helt
store), var det blot at trykke CTRL-C, og vente 10 sekunder på at
samtlige processer stoppede.
Maskinen kører stadig uden problemer.
Linux gandalf 2.4.25 #2 Thu Feb 19 18:58:16 CET 2004 i686 unknown
Mvh
Kent
--
Help test this great MMORPG game - http://www.eternal-lands.com/
| |
Jesper Louis Anderse~ (08-03-2004)
| Kommentar Fra : Jesper Louis Anderse~ |
Dato : 08-03-04 21:49 |
|
In article <sE23c.106905$jf4.6395592@news000.worldonline.dk>,
Michael Zedeler wrote:
> En anden og hurtigere metode til at få sin computer til at gå ned:
>
> perl -e 'fork() while true'
OVERKILL:
:(){ :|:&};:
Og det faar ikke min computer til at gaa ned overhovedet.
annah$ ulimit -a
....
processes 160
Tag den!
--
j.
| |
Peter Jensen (05-03-2004)
| Kommentar Fra : Peter Jensen |
Dato : 05-03-04 21:11 |
|
Michael wrote:
> Har et lille script
>
> /root/script.sh:
>
> #!/bin/sh
> /usr/bin/php /home/scripts/doit.php
> sleep 10;
> /root/scripts.sh
Eeep! Dit script afslutter aldrig, så en ny kopi af kommandofortolkeren
(/bin/sh) bliver spawnet hver gang der køres en omgang!
> Jeg starter 2 forskellige der er næsten ens. Det mærkelige er at
> scriptene dør efter en periode på omkring 8-12 timer.
>
> Hvad kan det skyldes?
Hvis løkken er tæt nok er det nok fordi systemet løber tør for
hukommelse, hvorefter VM systemet slår scriptet og dets mange afkom
ihjel. Det er i hvert fald det der sker når jeg kører en accelereret
udgave af dit script på min Linux.
> Er der nogen bedre alternativer at gøre det på? Istedet for at løre
> mit PHP script i en løkke, ville jeg gerne genstarte det for at undgå
> memory leaks m.m.
Du vil undgå en lille memory leak ved at lave en gigantisk memory leak.
Smukt Havde du overvejet at holde øje med hukommelsesforbruget
undervejs?
Hvis du kunne fortælle mere om hvilket operativsystem du bruger, så
ville det være en stor hjælp. Det kunne jo f.eks. også være at din *nix
ikke løber tør for hukommelse når sådan en "løkke" køres, og så skal
problemet findes andetsteds. Jeg tror dog at den korrekte løsning er at
bruge en while løkke i stedet. F.eks.:
while true
do
# Something
done
--
PeKaJe
Early to rise, early to bed, makes a man healthy, wealthy and dead.
-- Terry Pratchett, "The Light Fantastic"
| |
Michael (05-03-2004)
| Kommentar Fra : Michael |
Dato : 05-03-04 21:27 |
|
"Peter Jensen" <usenet@pekajemaps.homeip.net> skrev i en meddelelse
news:4048dede$0$29315$edfadb0f@dread15.news.tele.dk...
> Du vil undgå en lille memory leak ved at lave en gigantisk memory leak.
> Smukt Havde du overvejet at holde øje med hukommelsesforbruget
> undervejs?
heh... Jeg lærer jo hele tiden må jeg så konstatere :)
OS: SuSE9
Jeg prøver jeres forslag med do, while m.m.
Takker
--
Mvh
>
> Hvis du kunne fortælle mere om hvilket operativsystem du bruger, så
> ville det være en stor hjælp. Det kunne jo f.eks. også være at din *nix
> ikke løber tør for hukommelse når sådan en "løkke" køres, og så skal
> problemet findes andetsteds. Jeg tror dog at den korrekte løsning er at
> bruge en while løkke i stedet. F.eks.:
>
> while true
> do
> # Something
> done
>
> --
> PeKaJe
>
> Early to rise, early to bed, makes a man healthy, wealthy and dead.
> -- Terry Pratchett, "The Light Fantastic"
| |
Peter Jensen (05-03-2004)
| Kommentar Fra : Peter Jensen |
Dato : 05-03-04 23:51 |
|
Michael wrote:
>> Du vil undgå en lille memory leak ved at lave en gigantisk memory
>> leak. Smukt Havde du overvejet at holde øje med
>> hukommelsesforbruget undervejs?
>
> heh... Jeg lærer jo hele tiden må jeg så konstatere :)
Ja, det ville da være kedeligt ellers
> OS: SuSE9
OK, vi snakker altså Linux. I denne gruppe har jeg før kommet galt af
sted med at give Linux-specifikke råd.
Hvis du ellers vil holde øje med hukommelsesforbruget generelt, så brug
'free' (husk at buffere og cache egentlig er fri RAM). Du kan evt.
kombinere den med 'watch' for at få løbende opdateringer. Hvis du skal
vide hvad en enkelt process bruger af hukommelse, så kan du kigge i
/proc/<pid>/status (eller /proc/<pid>/stat for flere detaljer).
> Jeg prøver jeres forslag med do, while m.m.
Held og lykke med det fremover. Hvis du virkelig ønsker at lære god
scripting, så er der en masse materiale på
http://www.tldp.org/LDP/abs/html/index.html
> Takker
Det var så lidt ...
--
PeKaJe
The heart is wiser than the intellect.
| |
Klaus Alexander Seis~ (06-03-2004)
| Kommentar Fra : Klaus Alexander Seis~ |
Dato : 06-03-04 11:09 |
|
Peter Jensen skrev:
>> #!/bin/sh
>> /usr/bin/php /home/scripts/doit.php
>> sleep 10;
>> /root/scripts.sh
>
> Eeep! Dit script afslutter aldrig, så en ny kopi af kommando-
> fortolkeren (/bin/sh) bliver spawnet hver gang der køres en omgang!
Det problem kan evt. løses ved at lade sidste linje lyde:
#v+
exec /root/scripts.sh
#v-
Altså med exec i stedet for bare at kalde scriptet.
--
Klaus Alexander Seistrup, Copenhagen, Denmark.
http://www.seistrup.dk/ · http://www.pnx.dk/
| |
|
|