Linux Shell DAY15

16.查用户

17.检测磁盘

18.检测新文件

19.最常用的命令

20.统计文件大小


查用户

题目要求

写个shell,看看你的Linux系统中是否有自定义用户(普通用户),若是有,一共有几个?

核心要求

Cenos6 uid>=500

Centos7 uid>=1000

代码

#!/bin/bash

v=\`awk -F 'release ' '{print $2}' /etc/redhat-release |cut -d '.' -f1\`

user()

{

      if \[ $1 -eq 0 \]

      then

          echo "系统没有自定义的用户"

      else

          echo "系统存在自定义用户,有$1个"

      fi

}

case $v in

  5|6)

      n=\`awk -F ':' '$3>=500' /etc/passwd|wc -l\`

      user $n

  ;;

  7)

      n=\`awk -F ':' '$3>=1000' /etc/passwd|wc -l\`

      user $n

  ;;

  *)

     echo "脚本出错."

  ;;

esac

检测磁盘

题目要求

写一个shell脚本,检测所有磁盘分区使用率和inode使用率并记录到以当天日期为命名的日志文件里,当发现某个分区容量或者inode使用量大于85%时,发邮件通知你自己。

代码

#!/bin/bash

dir=/tmp/disk

d=\`date +%F\`

[mail=123@123.com](mailto:mail=123@123.com)

\[ -d $dir \] || mkdir $dir

df >> $dir/$d.log

df -i >> $dir/$d.log

df|sed '1d' |awk -F ' +|%' '$5>=85 {print $7}' > $dir/df.tmp

df -i|sed '1d' |awk -F ' +|%' '$5>=85 {print $7}' > $dir/df_i.tmp

n1=\`wc -l $dir/df.tmp|awk '{print $1}'\`

n2=\`wc -l $dir/df_i.tmp|awk '{print $1}'\`

tag=0

if \[ $n1 -gt 0 \]

then

    if \[ $n2 -gt 0 \]

    then

        tag=11

    else

        tag=10

    fi

else

    if \[ $n2 -gt 0 \]

    then

        tag=01

    else

        tag=00

    fi

fi

case $tag in

    11)

        python [mail.py](http://mail.py/) $mail "磁盘空间和inode使用率高于85%" "\`cat $dir/df.tmp $dir/df_i.tmp|xargs\`"

        ;;

    10)

        python [mail.py](http://mail.py/) $mail "磁盘空间使用率高于85%" "\`cat $dir/df.tmp|xargs\`"

        ;;

    01)

        python [mail.py](http://mail.py/) $mail "磁盘inode使用率高于85%" "\`cat $dir/df_i.tmp|xargs\`"

        ;;

    *)

        ;;

esac

检测新文件

题目要求

有一台服务器作为web应用,有一个目录(/data/web/attachment)不定时地会被用户上传新的文件,但是不知道什么时候会上传。所以,需要我们每5分钟做一次检测是否有新文件生成。

请写一个shell脚本去完成检测。检测完成后若是有新文件,还需要将新文件的列表输出到一个按年、月、日、时、分为名字的日志里。

核心要点

find -mmin -5

date %Y%m%d%H%M

代码

#!/bin/bash

basedir=/data/web/attachment

t=\`date +%Y%m%d%H%M\`

find $basedir/ -type f -mmin -5 > /tmp/file.list

n=\`wc -l /tmp/file.list|awk '{print $1}'\`

if \[ $n -lt 0 \]

then

   mv /tmp/file.list /tmp/$t.list

fi

最常用的命令

题目要求

写一个shell脚本来看看你使用最多的命令是哪些,列出你最常用的命令top10。

核心要点

history或者~/.bash_history

sort、uniq

代码

cat ~/.bash_history |sort |uniq -c |sort -nr |head

统计文件大小

题目要求

假如需要每小时都去执行一个脚本。在脚本中实现这样的功能,当时间是0点和12点时,需要将目录/data/log/下的文件全部清空,

注意只能清空文件内容而不能删除文件。而其他时间只需要统计一下每个文件的大小,一个文件一行,输出到一个按日期和时间为名字的日志里。

需要考虑/data/log/目录下的二级、三级、…  等子目录里面的文件。

核心要点

find列出所有文件

date +%H

file清空文件

代码

#!/bin/bash

dir=/tmp/log_stat                                             #创建专门放此文件的目录

t=\`date +%d%H\`

t1=\`date +%H\`

logdir=/data/log

\[ -d $dir \] || mkdir $dir

\[ -f $dir/$t.log \] && rm -f $dir/$t.log

if \[ $t1 == "00" -o $t1 == "12" \]

then

    for f in \`find $logdir/ -type f\`

    do

        \> $f

    done

else

    for f in \`find $logdir/ -type f\`

    do

        du -sh $f >> $dir/$t.log

    done

fi

转载于:https://my.oschina.net/u/3959701/blog/3100780

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值