View previous topic :: View next topic |
Author |
Message |
Anarcho Advocate
![Advocate Advocate](/images/ranks/rank-G-1-advocate.gif)
![](images/avatars/1030393113423afb9086043.jpg)
Joined: 06 Jun 2004 Posts: 2970 Location: Germany
|
Posted: Fri Jan 13, 2006 3:24 pm Post subject: |
|
|
Das Problem ist, das das * von der bash aufgelöst wird und dann die Liste als Parameter angeben wird.
Aber du kannst einem Programm nicht beliebig viele Paramter übergeben.
Daher muss du irgendwie anders, z.b. wie Libby schrieb, mit find die Liste erstellen.
Zeig dochmal welchen find Aufruf du verwendest hast. _________________ ...it's only Rock'n'Roll, but I like it! |
|
Back to top |
|
![](templates/gentoo/images/spacer.gif) |
Finswimmer Bodhisattva
![Bodhisattva Bodhisattva](/images/ranks/rank-bodhisattva.gif)
![](images/avatars/1672586922424daf205ec26.jpg)
Joined: 02 Sep 2004 Posts: 5467 Location: Langen (Hessen), Germany
|
Posted: Fri Jan 13, 2006 3:37 pm Post subject: |
|
|
Hi,
ich verwende:
/usr/bin/find $pfad > /tmp/makeprogress-tmp
Und so sieht es dann aus:
Code: | [16:32:53]|[root@tobi-rechner]|/home/tobi$ /tmp/makeprogress nvu
/tmp/makeprogress: line 15: /usr/bin/find: Argument list too long |
Bin ich aber direkt in dem Verzeichnis, ohne Script nur per Konsole, und gebe find > 1 ein, geht es ohne Probleme.
Ursprünglich hatte ich das nicht mit der extra Datei, sondern direkt per /usr/bin/find $pfad | /bin/grep make.......
Ich bin grad ein bisschen ratlos...
Danke für deine Bemühungen.
Tobi |
|
Back to top |
|
![](templates/gentoo/images/spacer.gif) |
l3u Advocate
![Advocate Advocate](/images/ranks/rank-G-1-advocate.gif)
![](images/avatars/535570295dff893c1fda6.png)
Joined: 26 Jan 2005 Posts: 2616 Location: Konradsreuth (Germany)
|
Posted: Fri Jan 13, 2006 3:46 pm Post subject: |
|
|
Komisch ... bei mir funktioniert folgendes einwandfrei:
Code: | erhome portage # pwd
/var/log/portage
erhome portage # find | wc -l
1019 (also 1019 Dateien, sprich: viele ;-)
erhome portage # find | grep "inkscape"
./3533-inkscape-0.43.log
./3644-inkscape-0.43.log
./3864-inkscape-0.43.log
./3532-inkscape-0.43.log
./3645-inkscape-0.43.log
./3863-inkscape-0.43.log |
Die Fehlermeldung, die du bekommst, seht eher so aus, als ob dir Argumentliste für find zu lang wäre, nicht die für grep.
EDIT:
Wobei ich aber nach wie vor sicher bin, daß das der falsche Weg ist: in meinem Fall gabe es hier 6 verschiedene Inkscape-Log-Dateien zur Auswahl -- woher willst du so wissen, welche die aktuelle ist?
Last edited by l3u on Fri Jan 13, 2006 3:50 pm; edited 2 times in total |
|
Back to top |
|
![](templates/gentoo/images/spacer.gif) |
Finswimmer Bodhisattva
![Bodhisattva Bodhisattva](/images/ranks/rank-bodhisattva.gif)
![](images/avatars/1672586922424daf205ec26.jpg)
Joined: 02 Sep 2004 Posts: 5467 Location: Langen (Hessen), Germany
|
Posted: Fri Jan 13, 2006 3:49 pm Post subject: |
|
|
Ja, in der Konsole geht bei mir auch alles einwandfrei.
Aber da, wo das Script abbricht, bei der Datei handelt es sich um 38829 38838 1976075 (Ausgabe von wc)
Tobi |
|
Back to top |
|
![](templates/gentoo/images/spacer.gif) |
friedegott n00b
![n00b n00b](/images/ranks/rank_rect_0.gif)
Joined: 06 Sep 2004 Posts: 60 Location: Munich, Germany
|
Posted: Fri Jan 13, 2006 5:02 pm Post subject: |
|
|
Hm ich wuerd wohl die .c, .cc, .cpp und .o dateien zaehlen lassen und damit dann die Fortschritt abschaetzen...
Code: |
#!/bin/sh
die() {
echo $1
exit 1
}
tail -n 1 /var/log/emerge.log | egrep -q "Compiling/Merging"
[ $? -eq 1 ] && die "no current merge found"
cm=$(tail -n 1 /var/log/emerge.log| awk '{ print $7 }' | awk -F: '{ print $1 }')
cm=${cm:1}
cm=`basename ${cm}`
echo $cm
nc=$(find /var/tmp/portage/$cm/ | egrep "\.c[cp]?p?$" | wc -l)
no=$(find /var/tmp/portage/$cm/ | egrep "\.o$" | wc -l)
echo "${no}/${nc}"
|
mal so auf die schnelle... |
|
Back to top |
|
![](templates/gentoo/images/spacer.gif) |
Anarcho Advocate
![Advocate Advocate](/images/ranks/rank-G-1-advocate.gif)
![](images/avatars/1030393113423afb9086043.jpg)
Joined: 06 Jun 2004 Posts: 2970 Location: Germany
|
Posted: Fri Jan 13, 2006 5:31 pm Post subject: |
|
|
Finswimmer wrote: | Hi,
ich verwende:
/usr/bin/find $pfad > /tmp/makeprogress-tmp
Und so sieht es dann aus:
Code: | [16:32:53]|[root@tobi-rechner]|/home/tobi$ /tmp/makeprogress nvu
/tmp/makeprogress: line 15: /usr/bin/find: Argument list too long |
Bin ich aber direkt in dem Verzeichnis, ohne Script nur per Konsole, und gebe find > 1 ein, geht es ohne Probleme.
Ursprünglich hatte ich das nicht mit der extra Datei, sondern direkt per /usr/bin/find $pfad | /bin/grep make.......
Ich bin grad ein bisschen ratlos...
Danke für deine Bemühungen.
Tobi |
Vielleicht steht in $path noch was mit * drin?
Sonst lass dir den Inhalt von $path mal anzeigen. _________________ ...it's only Rock'n'Roll, but I like it! |
|
Back to top |
|
![](templates/gentoo/images/spacer.gif) |
Finswimmer Bodhisattva
![Bodhisattva Bodhisattva](/images/ranks/rank-bodhisattva.gif)
![](images/avatars/1672586922424daf205ec26.jpg)
Joined: 02 Sep 2004 Posts: 5467 Location: Langen (Hessen), Germany
|
Posted: Fri Jan 13, 2006 5:57 pm Post subject: |
|
|
Okay. Da waren echt noch ein paar Fehler drin.
Code: | #!/bin/bash
log="/var/log/portage/"`/usr/bin/ls /var/log/portage/ | /bin/grep -i $1`
Verarbeitet=`cat $log | /bin/grep "make\[.\]"|/bin/grep -i leaving |wc|gawk -F " " '{ print $1 }'`
#pfad="/var/tmp/portage/"`/usr/bin/ls /var/tmp/portage/|grep $1`"/work/"`/usr/bin/ls /var/tmp/portage/|grep $1`
paket=`/usr/bin/ls /var/tmp/portage/|grep $1`
pfad="/var/tmp/portage/"$paket"/work/"
/usr/bin/find $pfad > /tmp/makeprogress-tmp
gesamt=` cat /tmp/makeprogress-tmp |/bin/grep -i makefile|grep -v ".am" |/bin/grep -v ".in"|wc|gawk -F " " '{ print $1 }'`
echo "Es wurden schon "$Verarbeitet" Verzeichnisse von" $gesamt "verarbeitet" |
So ists besser.
Unter der Annahme, dass /var/tmp/portage immer schön sauber ist, gibt es keine Probleme.
Ich muss nur noch bei Gelegenheit eine Abfrage einfügen, dass, sofern mehrere LogDateien vorhanden sind, immer die aktuelle genommen wird.
Tobi |
|
Back to top |
|
![](templates/gentoo/images/spacer.gif) |
l3u Advocate
![Advocate Advocate](/images/ranks/rank-G-1-advocate.gif)
![](images/avatars/535570295dff893c1fda6.png)
Joined: 26 Jan 2005 Posts: 2616 Location: Konradsreuth (Germany)
|
Posted: Fri Jan 13, 2006 7:16 pm Post subject: |
|
|
Naja, aber "immer schön sauber" heißt ja nicht zwingend, daß keine Logdateien für ältere Merges drin sind ... es muß doch rauszufinden sein, nach welchen Kriterien diese Zahl vorne am Log generiert wird! |
|
Back to top |
|
![](templates/gentoo/images/spacer.gif) |
Finswimmer Bodhisattva
![Bodhisattva Bodhisattva](/images/ranks/rank-bodhisattva.gif)
![](images/avatars/1672586922424daf205ec26.jpg)
Joined: 02 Sep 2004 Posts: 5467 Location: Langen (Hessen), Germany
|
Posted: Sat Jan 14, 2006 1:09 pm Post subject: |
|
|
Nicht unbedingt.
Was für mein Script Voraussetzung ist, ist dass in /var/tmp/portage keine älteren (abgebrochenen) entpackte Source Pakete liegen.
Denn da sucht das Script nach dem Namen, den es dann übernimmt und in /var/log/portage/ danach sucht.
Da ich dann schon den richtigen Namen mit Versionsnummer habe, ist es nur noch wichtig, dass die neuste Version von der Log Datei genommen wird.
Könnte ja sein, dass man das Programm zweimal an einem Tag installieren muss...
Also fehlt nur noch diese Abfrage, und das Script geht dann für alle Programme die mittels make kompiliert werden...
Tobi |
|
Back to top |
|
![](templates/gentoo/images/spacer.gif) |
l3u Advocate
![Advocate Advocate](/images/ranks/rank-G-1-advocate.gif)
![](images/avatars/535570295dff893c1fda6.png)
Joined: 26 Jan 2005 Posts: 2616 Location: Konradsreuth (Germany)
|
Posted: Sat Jan 14, 2006 3:14 pm Post subject: |
|
|
Das könnt man sich aber alles sparen, wenn man die Nummer vor der Logdatei wüßte ... |
|
Back to top |
|
![](templates/gentoo/images/spacer.gif) |
Finswimmer Bodhisattva
![Bodhisattva Bodhisattva](/images/ranks/rank-bodhisattva.gif)
![](images/avatars/1672586922424daf205ec26.jpg)
Joined: 02 Sep 2004 Posts: 5467 Location: Langen (Hessen), Germany
|
Posted: Wed Jan 25, 2006 11:08 am Post subject: |
|
|
Code: | #!/bin/bash
log="/var/log/portage/"`/usr/bin/ls -1 --sort=time /var/log/portage/ |/bin/grep -i $1 |/usr/bin/head -n 1`
Verarbeitet=`cat $log | /bin/grep "make\[.\]"|/bin/grep -i leaving |wc|gawk -F " " '{ print $1 }'`
#pfad="/var/tmp/portage/"`/usr/bin/ls /var/tmp/portage/|grep $1`"/work/"`/usr/bin/ls /var/tmp/portage/|grep $1`
paket=`/usr/bin/ls /var/tmp/portage/|grep $1`
pfad="/var/tmp/portage/"$paket"/work/"
let gesamt=`/usr/bin/find $pfad -type d | wc -l`-1
echo "Es wurden schon "$Verarbeitet" Verzeichnisse von" $gesamt "verarbeitet" |
Neueste Variante:
Gesamt zählt alle Verzeichnisse, denn mir ist aufgefallen, dass make in alle Verzeichnisse reingeht, undabhänig davon, ob da eine Makefile drin ist.
log ist nun immer die aktuellste Datei von einem bestimmten Suchbegriff.
Nun müssten annährend richtige Ergebnisse entstehen.
Tobi |
|
Back to top |
|
![](templates/gentoo/images/spacer.gif) |
|