Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
Bash: Script zu langsam in der Ausgabe
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)
View previous topic :: View next topic  
Author Message
solos
n00b
n00b


Joined: 26 Feb 2008
Posts: 49

PostPosted: Fri Apr 23, 2010 11:56 am    Post subject: Bash: Script zu langsam in der Ausgabe Reply with quote

Hallo Forum,

ich bin vor einigen Tagen auf Xmonad umgestiegen und habe mir für die Statusleiste dzen ein Script gebastelt, das mir die Uhrzeit und den Status von fetchmail, sowie die Anzahl der Mails im inbox-Ordner anzeigt. Läuft alles soweit zufriedenstellend, bis auf die Tatsache, dass mein Script zu lahm ist :/

Die Ausgabe soll jede Sekunde aktualisiert werden, was mir eine Uhrzeit mit Sekunden erlaubt, aber leider springt er, da die Durchgänge laut time etwa 1,1sec brauchen:

Quote:
^fg(white)fetchmail: ^fg(red)off^fg(white) | mails: ^fg(green)2^fg(white) | Fr 23-04-2010 13:19:44^fg()
^fg(white)fetchmail: ^fg(red)off^fg(white) | mails: ^fg(green)2^fg(white) | Fr 23-04-2010 13:19:45^fg()
^fg(white)fetchmail: ^fg(red)off^fg(white) | mails: ^fg(green)2^fg(white) | Fr 23-04-2010 13:19:46^fg()
^fg(white)fetchmail: ^fg(red)off^fg(white) | mails: ^fg(green)2^fg(white) | Fr 23-04-2010 13:19:48^fg()
^fg(white)fetchmail: ^fg(red)off^fg(white) | mails: ^fg(green)2^fg(white) | Fr 23-04-2010 13:19:49^fg()


Da ich mich mit bash noch nicht so gut auskenne, möchte ich mal die bash-Profis bitten sich das folgende Script anzuschauen und mir Tipps zu geben, wie ich die Ausgabe der Uhrzeit besser hinbekommen kann. Ich habe schon drüber nachgedacht die Scripte zu trennen da ich denke, dass der "cat-Aufruf" zu lange braucht. Oder hat jemand eine bessere Idee?

fetchmail besorgt alle 5min neue E-Mails, trotzdem prüfe ich sekündlich den E-Mailordner, da ich ja in der Zwischenzeit Mails löschen oder verschieben kann. ;)

Code:
#!/bin/bash

INTERVAL=1

function fmail() {

        if [ -a ~/.fetchmail.pid ]; then
                FSTATE="^fg(green)on^fg(white)"
        else
                FSTATE="^fg(red)off^fg(white)"
        fi


        MAILS=`cat ~/mail/test | grep "Subject: " | wc -l`
        if [ $MAILS = 0 ]; then
                MSTATE=" | mails: ^fg(red)$MAILS^fg(white)"
        else
                MSTATE=" | mails: ^fg(green)$MAILS^fg(white)"
        fi


        echo -n "fetchmail: $FSTATE$MSTATE"
}

function fdate() {
        date +"%a %d-%m-%Y %H:%M:%S"
}


while true; do
        echo "^fg(white)$(fmail) | $(fdate)^fg()"
        sleep $INTERVAL
done


Ansonsten bin ich für alle Vorschläge und Kritik dankbar.

Grüße!
Back to top
View user's profile Send private message
Finswimmer
Moderator
Moderator


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

PostPosted: Fri Apr 23, 2010 12:20 pm    Post subject: Reply with quote

cat ~/mail/test | grep "Subject: " | wc -l
geht schneller:
grep -c "Subject: " ~/mail/test

Tobi
_________________
Bitte auf Rechtschreibung, korrekte Formatierung und Höflichkeit achten!
Danke
Back to top
View user's profile Send private message
mv
Watchman
Watchman


Joined: 20 Apr 2005
Posts: 6289

PostPosted: Fri Apr 23, 2010 12:56 pm    Post subject: Re: Bash: Script zu langsam in der Ausgabe Reply with quote

Gerade beim Forken (benötigt für `...`) braucht die Bash außergewöhnlich lange. Wenn Du "echo -n" bzw. "echo" durch "printf" ersetzt (ev. musst Du da dies Escape-Sequenzen anpassen) ist Dein Script POSIX. Du kannst also beispielsweise die viel flinkere dash anstelle der bash benutzen.
Back to top
View user's profile Send private message
solos
n00b
n00b


Joined: 26 Feb 2008
Posts: 49

PostPosted: Fri Apr 23, 2010 3:51 pm    Post subject: Reply with quote

Danke euch beiden! Leider hatte ich danach immer noch Sprünge. Zwar seltener, aber sie waren vorhanden.
Ich habe die eine Sekunde bei sleep jetzt einfach auf 0.9 gesetzt. So kann es zwar vorkommen, dass eine Sekunde zweimal auftaucht, aber da sich die Anzeige ja selber überschreibt ist das nicht so schlimm.

Grüße
Back to top
View user's profile Send private message
Genone
Retired Dev
Retired Dev


Joined: 14 Mar 2003
Posts: 9236
Location: beyond the rim

PostPosted: Fri Apr 23, 2010 9:42 pm    Post subject: Reply with quote

Naja, in Nullzeit lässt sich das halt nicht erledigen, und wenn dann der sleep Aufruf schon eine Sekunde dauert ...
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Deutsches Forum (German) 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