shell skript in perl

foexle

foexle

Kaiser
ser leute
ich habe ein shell skript geschrieben das mir server infos ausliest. Das ist alles soweit ok, aber ich würde gerne die returns was ich zurückbekomme parsen

Code:
#!/bin/sh
secounds=$1;

zaehler=1


while [ $zaehler -le $secounds ]
do
        if [ $zaehler -eq 1 ]
        then
                echo "date;mem;cpu;user;">>test.txt
        fi

        date="`date +%H:%M:%S`"
        mem="`top -n 1 |head -n 5 | grep Mem`"
        cpu="`top -n 1 |head -n 5 | grep Cpu`"
        user="`apache2ctl status | grep workers`"
        test="$date;$mem;$cpu;$user;"
        echo -e "$date\n$mem\n$cpu\n$user"
        echo $test >> test.txt
        zaehler=`expr $zaehler + 1`
        sleep 1
done

so sieht das skript aus

was ich dann zurück bekomme sieht so aus

19:21:29
Mem: 256972k total, 246424k used, 10548k free, 105608k buffers
Cpu(s): 0.1%us, 0.1%sy, 0.0%ni, 99.8%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
1 requests currently being processed, 5 idle workers

nun würde ich gerne die ausgabe soweit beschränken das nur noch beispielweise

19:21:29
246424
0.1
5
steht .... also bei mem nur den used wert bei cpu nur die user auslastung und die 5 bei idle workters rausbekommen
ich weis das ich das mit awk machen könnte, da ich aber sowiso in perl einsteigen will würde ich gerne wissen wie ich an die sache rangehe !

mfg foexle

edit:
es geht mir nicht unbedingt um den syntax, wie ich schleifen oder sowas mache, das kann ich nachlesen, sondern eher wie ich das mit dem regex mache
 
Zuletzt bearbeitet:
echo $mem|awk {'print $1'}
 
Zuletzt bearbeitet:
hmm ja stimmt ... ich glaub ich hab nur probleme mit dem reg ausdruck :>
 
bzw.

mem="`top -n 1 |head -n 5 | grep Mem|awk {'print $1'`"
 
super das mit awk klappt ...

wenn einer das schnell in perl umsetzten könnte, wenn wer zeit uns lust hat, würde mich sehr interessieren wie ich das in perl machen könnte !

mfg und danke an tennessee

und noch eine frage :> ich bekomme mit awk nun die richtigen werte, aber bei der cpu steht ja 0.1%us jetzt will ich die letzten 3 zeichen abschneiden
wie mache ich das am einfachsten?
 
Zuletzt bearbeitet:

Ähnliche Themen

load avarage permanent 10

Shell-Skript nicht doppelt starten

XEN Load balance

Gnome Classic Desktop: Home-Inhalt Icons ausblenden

Shellskript - Fehler in Cron

Zurück
Oben