Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
Bashskript beschleunigen
View unanswered posts
View posts from last 24 hours
View posts from last 7 days

 
Reply to topic    Gentoo Forums Forum Index Deutsches Forum (German) Diskussionsforum
View previous topic :: View next topic  
Author Message
Finswimmer
Bodhisattva
Bodhisattva


Joined: 02 Sep 2004
Posts: 5467
Location: Langen (Hessen), Germany

PostPosted: Sat Jun 06, 2009 9:30 am    Post subject: Bashskript beschleunigen Reply with quote

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
View user's profile Send private message
mv
Watchman
Watchman


Joined: 20 Apr 2005
Posts: 6780

PostPosted: Sat Jun 06, 2009 9:56 am    Post subject: Re: Bashskript beschleunigen Reply with quote

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
View user's profile Send private message
franzf
Advocate
Advocate


Joined: 29 Mar 2005
Posts: 4565

PostPosted: Sat Jun 06, 2009 10:44 am    Post subject: Reply with quote

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
View user's profile Send private message
Finswimmer
Bodhisattva
Bodhisattva


Joined: 02 Sep 2004
Posts: 5467
Location: Langen (Hessen), Germany

PostPosted: Sat Jun 06, 2009 11:35 am    Post subject: Reply with quote

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
View user's profile Send private message
franzf
Advocate
Advocate


Joined: 29 Mar 2005
Posts: 4565

PostPosted: Sat Jun 06, 2009 12:30 pm    Post subject: Reply with quote

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
View user's profile Send private message
Finswimmer
Bodhisattva
Bodhisattva


Joined: 02 Sep 2004
Posts: 5467
Location: Langen (Hessen), Germany

PostPosted: Sat Jun 06, 2009 12:54 pm    Post subject: Reply with quote

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
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Deutsches Forum (German) Diskussionsforum All times are GMT
Page 1 of 1

 
Jump to:  
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