View previous topic :: View next topic |
Author |
Message |
Finswimmer Bodhisattva


Joined: 02 Sep 2004 Posts: 5467 Location: Langen (Hessen), Germany
|
Posted: Sat Jun 06, 2009 9:30 am Post subject: Bashskript beschleunigen |
|
|
Hi,
ich migriere von ~amd64 nach amd64.
Dazu habe ich mir folgendes Skript gebastelt.
Idee ist, dass ich bei allen Paketen in .ebuild nach ~amd64 suche.
Ist das der Fall, so wird es in die package.keywords geschrieben.
Code: | $cat /usr/local/sbin/keywords
echo -n "Vorher:"
cp /etc/portage/package.keywords /etc/portage/package.keywords.backup
wc -l /etc/portage/package.keywords
rm /etc/portage/package.keywords
for i in $(equery l -i|cut -d" " -f3); do for x in $(equery which $i);do [ $(grep -c "~amd64" $x ) -ne 0 ] && echo $i >> /etc/portage/package.keywords ;done;done
echo -n "Nachher:"
wc -l /etc/portage/package.keywords |
Nun ist die Frage, wo und wie ich das beschleunigen kann.
Meine Idee wäre, dass ich die Ursprungsliste $(equery l -i) nach Anfangsbuchstaben trenne, sodass die Schleife 24mal gleichzeitig ablaufen kann.
Geht es irgendwie eleganter?
Tobi
P.S.: Evtl gibt es schon fertige Tools, die das können.
Ich möchte aber auch etwas lernen und hoffe, dass ihr mir helft das obige zu beschleunigen _________________ Bitte auf Rechtschreibung, korrekte Formatierung und Höflichkeit achten!
Danke
Last edited by Finswimmer on Sat Jun 06, 2009 10:37 am; edited 1 time in total |
|
Back to top |
|
 |
mv Watchman


Joined: 20 Apr 2005 Posts: 6780
|
Posted: Sat Jun 06, 2009 9:56 am Post subject: Re: Bashskript beschleunigen |
|
|
Finswimmer wrote: | Meine Idee wäre, dass ich die Ursprungsliste $(equery l -i) nach Anfangsbuchstaben trenne, sodass die Schleife 24mal gleichzeitig ablaufen kann. |
Viel wirst Du nicht beschleunigen können, wenn Du auf equery zugreifen willst: Dieses Tool ist halt einfach sehr langsam.
Parallelisieren ist ebenfalls schwierig, weil Du alles in die selbe Datei schreiben willst: Da müsstest Du die Datei schon jeweils locken, damit sich die Schreibprozesse garantiert nicht in die Quere kommen. Und dann ist die Ausgabe natürlich trotzdem nicht sortiert.
Quote: | P.S.: Evtl gibt es schon fertige Tools, die das können. |
Ja, gibt es:
Code: | eix --installed-testing --pure-packages --format '<=emptyinstalled>' |
(oder --installed-unstable or --format <=fullinstalled>; je nachdem, was Du wilst...) |
|
Back to top |
|
 |
franzf Advocate


Joined: 29 Mar 2005 Posts: 4565
|
Posted: Sat Jun 06, 2009 10:44 am Post subject: |
|
|
Ich würde dringenst empfehlen, kein automatisches, ungetestetes Backup per Script anzulegen!
In deinem Falle ist dein original package.keywords unwiederbringlich verloren, wenn du dein Script 2x hintereinander aurufst!
Entweder den User warnen/mit Meldung "file exists" abbrechen, oder gleich eindeutig benennen, sprich hintenran ein "date +%s" hängen. |
|
Back to top |
|
 |
Finswimmer Bodhisattva


Joined: 02 Sep 2004 Posts: 5467 Location: Langen (Hessen), Germany
|
Posted: Sat Jun 06, 2009 11:35 am Post subject: |
|
|
franzf wrote: | Ich würde dringenst empfehlen, kein automatisches, ungetestetes Backup per Script anzulegen!
In deinem Falle ist dein original package.keywords unwiederbringlich verloren, wenn du dein Script 2x hintereinander aurufst!
Entweder den User warnen/mit Meldung "file exists" abbrechen, oder gleich eindeutig benennen, sprich hintenran ein "date +%s" hängen. |
In der Hinsicht unnötig, da die ursprüngliche Datei immer funktionstüchtig ist.
Aber generell mache ich sowas auch nicht.
Trotzdem danke für den Hinweis!
Tobi _________________ Bitte auf Rechtschreibung, korrekte Formatierung und Höflichkeit achten!
Danke |
|
Back to top |
|
 |
franzf Advocate


Joined: 29 Mar 2005 Posts: 4565
|
Posted: Sat Jun 06, 2009 12:30 pm Post subject: |
|
|
Finswimmer wrote: | In der Hinsicht unnötig, da die ursprüngliche Datei immer funktionstüchtig ist. |
Wie das? Die ursprüngliche Datei existiert dann ja nimmer...
Lauf 1:
* pkg.kwd -> pkg.kwd.bkp
* rm pkg.kwd -> hier existiert dein Original nur noch im backup.
* Schreiben der neuen pkg.kwd mit deinem Script.
Lauf 2:
Hier wird als erstes gleich die vom Script generierte pkg.kwd ohne zu prüfen über dein ursprüngliches Backup gebügelt, somit ist das backup nutzlos!
Und wenn dein Scipt einen kleinen Fehler hat, oder irgendwie nicht alle Pakete korrekt zusammen getragen werden, hast du ziemliche Arbeit, wenn deine originale pkg.kwd recht lang war. |
|
Back to top |
|
 |
Finswimmer Bodhisattva


Joined: 02 Sep 2004 Posts: 5467 Location: Langen (Hessen), Germany
|
Posted: Sat Jun 06, 2009 12:54 pm Post subject: |
|
|
Warum sollte ich das auch gleich 2mal hintereinander ausführen?
Dazwischen kommt mindestens ein:
emerge --update --deep @system @world -av --tree
So sehe ich alle existierenden Probleme.
Wie gesagt.
Prinzipiell arbeite ich mit backups mit Daten.
Aber da nur ich dieses Skript auf meinem Heimrechner laufen lasse, halte ich es für unnötig, solch einen "Sicherheits-Overhead" drumherum zu basteln.
Tobi _________________ Bitte auf Rechtschreibung, korrekte Formatierung und Höflichkeit achten!
Danke |
|
Back to top |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|