Shell练习

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Shell练习相关的知识,希望对你有一定的参考价值。

习题1:统计日志大小

要求:假如我们需要每小时都去执行你写的脚本。在脚本中实现这样的功能,当时间是0点和12点时,需要将目录/data/log/下的文件全部清空,注意只能清空文件内容而不能删除文件。而其他时间只需要统计一下每个文件的大小,一个文件一行,输出到一个按日期和时间为名字的日志里。 需要考虑/data/log/目录下的二级、三级、…  等子目录里面的文件

参考答案:

#!/bin/bash
# date:2018年2月25日
logdir="/data/log/"
t=`date +%H`
d=`date +%F-%H`
[ -d /tmp/log_size ] || mkdir /tmp/log_size
for log in `find $logdir -type f`
do
   if [ $t == "0" ] || [ $t == "12" ]
   then
	true > $log
   else
	du -sh $log >> /tmp/log_size/$d
   fi
done

习题2:统计常用命令

要求:

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

思路:我们要用到一个文件就是.bash_history,然后再去sort、uniq,剩下的就不用我多说了吧。很简单一个shell。

参考答案:

#!/bin/bash
# date: 2018年2月25日
sort /root/.bash_history|uniq -c|sort -rn|head

习题3:获取文件列表

要求:

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

    请写一个shell脚本去完成检测。检测完成后若是有新文件,还需要将新文件的列表输出到一个按年、月、日、时、分为名字的日志里。请不要想的太复杂,核心命令只有一个 find /data/web/attachment -mmin -5

思路: 每5分钟检测一次,那肯定需要有一个计划任务,每5分钟去执行一次。脚本检测的时候,就是使用find命令查找5分钟内有过更新的文件,若是有更新,那这个命令会输出东西,否则是没有输出的。固,我们可以把输出结果的行数作为比较对象,看看它是否大于0

参考答案:

#!/bin/bash
# date: 2018年2月25日
d=`date -d "-5 min" +%Y%m%d%H%M`
basedir=/data/web/attachment
find $basedir -type f -mmin -5 > /tmp/newfile.txt
n=`wc -l /tmp/newfile.txt`
if [ $n -gt 0 ];then
    /bin/mv /tmp/newfile.txt /tmp/$d
fi


以上是关于Shell练习的主要内容,如果未能解决你的问题,请参考以下文章

Shell练习小程序练习练习——九九乘法表

spring练习,在Eclipse搭建的Spring开发环境中,使用set注入方式,实现对象的依赖关系,通过ClassPathXmlApplicationContext实体类获取Bean对象(代码片段

Python练习册 第 0013 题: 用 Python 写一个爬图片的程序,爬 这个链接里的日本妹子图片 :-),(http://tieba.baidu.com/p/2166231880)(代码片段

shell脚本练习题

shell脚本小练习

Shell练习获取彩票开奖结果