Shell週週練^_^

2017/11/13 週一;

天氣: 多雲轉小雨。
一、需求:寫一個腳本計算一下linux系統全部進程佔用內存大小的和。(提示,使用ps或者top命令)
法1:不過獲得的結果不同,個人天;python

[root@Dasoncheng sbin]# cat test.sh 
#!/bin/bash
ps aux |awk 'NR>1''{(sum=sum+$6)};END{print sum}' >1.txt
ps aux |awk '{print $6}' |grep -v 'RSS' |awk '{sum=sum+$1};END{print sum}' >>1.txt
[root@Dasoncheng sbin]# cat 1.txt 
743432
745356

法2:三種計算的結果都不同,我能怎麼辦 我也很無奈呀;linux

[root@Dasoncheng sbin]# cat c.sh 
#!/bin/bash
sum=0
for mem in `ps aux |awk '{print $6}' |grep -v 'RSS'`
do
  sum=$[$sum+$mem]
done
echo "The total memory is $sum""k"
sum2=`ps aux |awk 'NR>1''{(sum=sum+$6)};END{print sum}'`
sum3=`ps aux |awk '{print $6}' |grep -v 'RSS' |awk '{sum=sum+$1};END{print sum}'`
echo "$sum2"'k'
echo "$sum3"'k'
[root@Dasoncheng sbin]# sh c.sh 
The total memory is 742688k
741952k
743876k

二、需求:
設計一個腳本,監控遠程的一臺機器(假設ip爲123.23.11.21)的存活狀態,當發現宕機時發一封郵件給你本身。
提示:git

  1. 你能夠使用ping命令 ping -c10 123.23.11.21
  2. 發郵件腳本能夠參考 https://coding.net/u/aminglinux/p/aminglinux-book/git/blob/master/D22Z/mail.py
  3. 腳本能夠搞成死循環,每隔30s檢測一次
[root@Dasoncheng sbin]# cat d.sh 
#!/bin/bash
ip=192.168.60.12
mail=gecz0000@163.com
while :;
do
ping -c5 $ip >/dev/null
if [ $? != "0" ];
then
  python /usr/local/sbin/mail.py $mail "test ping $ip" "$ip is down"
fi;
sleep 30
done
[root@Dasoncheng sbin]# ls -l mail.py 
-rwxr-xr-x 1 root root 1033 Nov 14 14:29 mail.py

參考答案:

一、bash

#! /bin/bash
sum=0
for mem in `ps aux |awk ‘{print $6}’ |grep -v ‘RSS’ `
do
sum=$[$sum+$mem]
done
echo 「The total memory is $sum」」k」

也能夠使用awk 一條命令計算:.net

ps aux | grep -v ‘RSS TTY’ |awk ‘{(sum=sum+$6)};END{print sum}’

二、設計

#!/bin/bash
ip=123.23.11.21
ma=abc@139.com
while 1
do
ping -c10 $ip >/dev/null 2>/dev/null
if [ $? != 「0」 ];then
python /usr/local/sbin/mail.py $ma 「$ip down」 「$ip is down」
#假設mail.py已經編寫並設置好了
fi
sleep 30
done
相關文章
相關標籤/搜索