2017-06-27 2 views
0

-Code unten sollte den Speicher für Benutzer überprüfen, und wenn sie mehr als 1000, Print-Nachricht Ich erhalte immer fehler- Linie 4: Impalas: Befehl nicht gefundenShell-Skript Fehler bei der Deklaration Befehl

#!/bin/bash 

while [ true ] ;do 
used= `ps hax -o rss,user | awk '{a[$2]+=$1;}END{for(i in a)print i" 
"int(a[i]/1024+0.5);}' | grep user` 

if [[ $used > 1000 ]]; then 
echo "user memory is $used" 

fi 
sleep 5 
done 

I habe versucht verwendet = ps hax -o rss,user | awk '{a[$2]+=$1;}END{for(i in a)print i" "int(a[i]/1024+0.5);} | grep user'

und verwendet = 'ps hax -o rss,user | awk '{a[$2]+=$1;}END{for(i in a)print i" "int(a[i]/1024+0.5);}' | grep user' Ich brauche ein frisches Auge auf diese. Bitte helfen Sie.

+2

Entfernen Sie den Raum – 123

+2

Entfernen Sie das Leerzeichen nach dem Gleichheitszeichen? – perreal

+1

Jesus .. Danke – user3508766

Antwort

1

In bash, wie [ here ] erwähnt, würden Leerzeichen um das Gleichheitszeichen setzen zu Fehlern führen, also das richtige Format ist

variable_name=value; 

Darüber hinaus können Sie

while [ true ] 

zu

while true 
ändern

Bearbeiten

Wenn used die Form hat impala 600 und Sie sind nur in der Zahl am Ende interessiert, dann können Sie tun

used="${used##* }" 
#Do this just after the your first command. 

tun Schließlich

#use -gt for integer comparisons and > for string comparisons 
if ! [ -t $used ] && [ $used -gt 1000 ] 
then 
    echo "user memory is $used" 
fi 

Hinweis: Obwohl die Syntaxfehler im Skript werden behoben. Es gibt keine Garantie, dass die Programmlogik richtig ist.

+0

meine Ausgabe von ps hax -o rss, Benutzer | awk '{a [$ 2] + = $ 1;} END {für (i in a) drucke ich "" int (a [i] /1024 +0.5);}' | grep impala ist impala 600. Ich versuche, "impala" zu entfernen Ich habe versucht ps hax -o rss, user | awk '{a [$ 2] + = $ 1;} END {für (i in a) drucke ich "" int (a [i] /1024 +0.5);}' | grep impala | sed 's/\ D +/g' <<< "$ s" ohne Glück – user3508766

+0

@ user3508766: Siehe meine Bearbeitung. – sjsam

+0

Danke. Eine andere Sache ist, dass ich immer noch Ausgabe bekomme, wenn ich nicht sollte. seit 600 ist nicht> 1000 – user3508766

Verwandte Themen