[bash]script gebruikt veel virt mem en wordt gekilled

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • Paultje3181
  • Registratie: November 2002
  • Laatst online: 04:07
Ik heb een script wat zeer veel regels moet wegschrijven naar een bestand. Het script zelf is heel simpel:
code:
1
2
3
4
for i in {10000000..99999999..1}
do
echo "bla$1 >> bla.txt"
done

Dit script werkt prima, maar als ik i zo groot maak als in het voorbeeld, loopt mijn hele machine dicht en wordt op een gegeven moment het process gekilled.

Hoe kan ik er nu toch voor zorgen dat dit script tot het einde loopt zonder iedere keer i aan te moeten passen?

Acties:
  • 0 Henk 'm!

  • Hero of Time
  • Registratie: Oktober 2004
  • Laatst online: 21:30

Hero of Time

Moderator LNX

There is only one Legend

Werk met reeksen, zoals je hier ook al doet, maar dan in delen ipv gelijk een hele zwik in 1x. Dus doe 1.000.000 t/m 750.000, dan 749.999 t/m 500.000, etc.

Commandline FTW | Tweakt met mate


Acties:
  • 0 Henk 'm!

  • begintmeta
  • Registratie: November 2001
  • Niet online

begintmeta

Moderator General Chat
for ((i=10000000; i<=99999999; i++))

Acties:
  • 0 Henk 'm!

  • CyBeR
  • Registratie: September 2001
  • Niet online

CyBeR

💩

Om te beginnen moet je het juiste gereedschap gebruiken. Jouw hele script kan vervangen worden met één commando die 't in no-time klaar heeft:

seq -f 'bla%0.0f' 10000000 1 > bla.txt

All my posts are provided as-is. They come with NO WARRANTY at all.


Acties:
  • 0 Henk 'm!

  • Paultje3181
  • Registratie: November 2002
  • Laatst online: 04:07
Dit werkt inderdaad wel, dankjewel. Dat dit dus zoveel verschil maakt.

Acties:
  • 0 Henk 'm!

  • begintmeta
  • Registratie: November 2001
  • Niet online

begintmeta

Moderator General Chat
Het doet alleen niet wat je script doet lijkt me, of vergis ik me?

Uiteraard is seq het juiste gereedschap voor het maken van lange reeksen zoals CyBeR heel terecht aangeeeft Het verschil tussen jouw en mijn for-loop is dat bij jouw loop de volledige reeks in het geheugen moet worden geladen, terwijl bij mijn loop (net als bij seq vermoed ik) alleen een counter in het geheugen blijft staan.

[ Voor 3% gewijzigd door begintmeta op 06-10-2014 17:47 ]


Acties:
  • 0 Henk 'm!

  • CyBeR
  • Registratie: September 2001
  • Niet online

CyBeR

💩

begintmeta schreef op maandag 06 oktober 2014 @ 17:47:
Het doet alleen niet wat je script doet lijkt me, of vergis ik me?
Nee maar zijn script doet sowieso niet heel veel dus ik heb geïnterpreteerd wat 't waarschijnlijk zou moeten doen ;)

All my posts are provided as-is. They come with NO WARRANTY at all.


Acties:
  • 0 Henk 'm!

  • begintmeta
  • Registratie: November 2001
  • Niet online

begintmeta

Moderator General Chat
Ik niet >:)

Acties:
  • 0 Henk 'm!

  • Paultje3181
  • Registratie: November 2002
  • Laatst online: 04:07
Sorry, even typefout in mijn script. Maar met de aanpassing van Cyber en de goede parameters werkt het nu...
Pagina: 1