习题1:监控磁盘使用率
要求:写一个shell脚本,检测所有磁盘分区使用率和inode使用率并记录到以当天日期为命名的日志文件里,当发现某个分区容量或者inode使用量大于85%时,发邮件通知你自己。
思路:就是先df -h 然后过滤出已使用的那一列,然后再想办法过滤出百分比的整数部分,然后和85去比较,同理,inode也是一样的思路。
参考答案:
#!/bin/bash # date: 2018年2月26日 log=/var/log/disk/`date +%F`.log date +'%F %T' > $log df -h >> $log echo >> $log df -i >> $log email="your_email@163.com" # 磁盘分区使用率 for i in `df -h|awk '{print $5}'|sed 's/%//'` do expr $i + 1 &>/dev/null if [ $? -eq 0 ];then if [ $i -gt 85 ];then python /root/shell/mail.py "$email" "disk test" "`date +'%F %T'` disk warning..." fi fi done # inode使用率 for i in `df -i|awk '{print $5}'|sed 's/%//'` do expr $i + 1 &>/dev/null if [ $? -eq 0 ];then if [ $i -gt 85 ];then python /root/shell/mail.py "$email" "disk test" "`date +'%F %T'` disk inode warning..." fi fi done
邮件脚本mail.py:http://blog.51cto.com/11924224/2069732
习题2:统计普通用户
要求:写个shell,看看你的Linux系统中是否有自定义用户(普通用户),若是有,一共有几个?(假设所有普通用户都是uid大于1000的)
参考答案:
#!/bin/bash # date:2018年2月26日 total=`awk -F ':' '$3 > 1000' /etc/passwd |wc -l` if [ $total -gt 0 ];then echo "There are $total common user." else echo "No common user!" fi