一    每日一文件

【题目要求】

请按照这样的日期格式(xxxx-xx-xx)每日生成一个文件, 例如生成的文件名为2017-12-20.log, 并且把磁盘的使用情况写到到这个文件中, 不用考虑cron,仅仅写脚本即可

【习题答案】

本题答案:

#! /bin/bash
d=date +%F
logfile=$d.log
df -h > $logfile
需求升级:

#!/bin/bash
d=date +%F
dir=/data/logs/disklog
if [ ! -d $dir ]
then
mkdir -p $dir
fi
df -h > $dir/$d.log
find $dir/ -mtime +365 |xargs rm

                                 二     统计IP访问量

题目要求
有日志1.log,部分内容如下

112.111.12.248 – [25/Sep/2013:16:08:31 +0800]formula-x.haotui.com “/seccode.php?update=0.5593110133088248″ 200″http://formula-x.haotui.com/registerbbs.php” “Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1;)”
61.147.76.51 – [25/Sep/2013:16:08:31 +0800]xyzdiy.5d6d.com “/attachment.php?aid=4554&k=9ce51e2c376bc861603c7689d97c04a1&t=1334564048&fid=9&sid=zgohwYoLZq2qPW233ZIRsJiUeu22XqE8f49jY9mouRSoE71″ 301″http://xyzdiy.×××thread-1435-1-23.html” “Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)”
统计出每个IP访问量有多少

核心要点
awk、sort、uniq命令

参考答案
awk '{print $1}' 1.log|sort |uniq -c |sort -n -r

                           三     统计内存占用之和

题目要求
写一个脚本计算一下linux系统所有进程占用内存大小的和。

核心要点
ps命令用法
for循环
加法运算
参考答案
#!/bin/bash
sum=0
for n in ps aux |grep -v 'TIME COMMAND'|awk '{print $6}'
do
sum=$[$sum+$n]
done
echo $sum

                             四    检查机器存活

题目要求
设计一个脚本,监控远程的一台机器(假设ip为180.163.26.39)的存活状态,当发现宕机时发一封邮件给你自己。

核心要点
ping -c10 180.163.26.39 通过ping来判定对方是否在线

发邮件脚本 https://coding.net/u/aminglinux/p/aminglinux-book/git/blob/master/D22Z/mail.py

参考答案
#!/bin/bash
n=ping -c5 180.163.26.39|grep 'packet' |awk -F '%' '{print $1}' |awk '{print $NF}'
if [ -z "$n" ]
then
echo "脚本有问题。"
python mail.py $m "检测机器存活脚本$0有问题" "获取变量的值为空"
exit
else
n1=echo $n|sed 's/[0-9]//g'
if [ -n "$n" ]
then
echo "脚本有问题。"
python mail.py $m "检测机器存活脚本$0有问题" "获取变量的值不是纯数字"
exit
fi
fi

if br/>m=123@qq.com
while :
do
if [ $n -ge 50 ]
then
python mail.py $m "机器宕机" "丢包率是$n%"
fi
sleep 30
done

                                     五    批量改文件名

题目要求
找到/123目录下所有后缀名为.txt的文件

批量修改.txt为.txt.bak
把所有.bak文件打包压缩为123.tar.gz
批量还原文件的名字,即把增加的.bak再删除
核心要点
find用来查找所有.txt文件
tar打包一堆文件
还原文件名用for循环
参考答案
#!/bin/bash
find /123/ -type f -name "*.txt" > /tmp/txt.list
for f in cat /tmp/txt.list
do
mv $f $f.bak
done

#find /123/ -type f -name .txt |xargs -i mv {} {}.bak
#find /123/ -type f -name
.txt -exec mv {} {}.bak \;

for f in cat /tmp/txt.list
do
echo $f.bak
done > /tmp/txt.bak.list

tar -czvf 123.tar.gz cat /tmp/txt.bak.list |xargs

for f in cat /tmp/txt.list
do
mv $f.bak $f
done

转载于:https://blog.51cto.com/percnet100/2338084

SHELL实战day12相关推荐

  1. 企业Shell实战-MySQL分库分表备份脚本

    本文来自 http://www.xuliangwei.com/xubusi/252.html 免费视频讲解见 http://edu.51cto.com/course/course_id-5064.ht ...

  2. 老男孩shell实战读书笔记 (6-10章节)

    老男孩shell教程 (6-10章节) shell脚本的条件测试与比较 在bash编程中,条件测试常用的语法形式如下表: 说明⚠️: 语法1中的test命令和语法2中的[]是等价的. 语法3中的[[] ...

  3. shell实战之日志脱敏

    本次实战目标为日志脱敏,将日志目录内的所有文件进行处理,凡是涉及到卡号和密码的信息,一律以"*"号替代,要替代的内容都从对应的标签内获取,本脚本执行目录 drwxr-xr-x 5 ...

  4. shell实战训练营Day14

    输入数字执行命令 输入1执行 date命令 输入2执行 ls命令 可以使用case判断 #!/bin/bash echo "cmd manu 1 date 2 ls 3 pwd" ...

  5. shell实战训练营Day1

    1.shell基础介绍 shell是一个命令解释器.人机交互 有特定的语法 for if while 等 centos7中默认shell为bash,但也有ksh,zsh等shell 2.命令历史 hi ...

  6. shell实战训练营Day2

    6.管道符号与作业控制 管道符 | 把左边命令输出结果交给右边执行. cat /etc/passwd | grep -i root 列出passwd中包含 root的行. 作业控制 Ctrl+ z 暂 ...

  7. shell实战(二):cat EOF 追加与覆盖文件

    一.前言 之前写shell脚本的时候,有这样一个需求:我需要创建一些文件,并将内容输入到文件中.如果创建一个文件内容模板,然后通过$1,$2传参的形式修改某些值,这样做感觉太不方便.后来从网上找了到 ...

  8. oozie action shell 实战(完整配置文件)

    有一个这样的需求,apache oozie调用shell命令(x.sh的脚本文件),x.sh的逻辑为先执行第一个jar包命令,后执行一个spark任务,第一个jar任务命令执行成功后返回的结果作为参数 ...

  9. 【shell实战】使用shell实现一个进度条

    前言 之前有小伙伴留言说,有没有那种花里胡哨的东西,比如进度条,今天他来了. 思路 1. 进度条的组成 进度条由 五个字符组成: 主进度条: # 花里胡哨的转圈圈: | \ - / #号用于生成进度: ...

最新文章

  1. c++程序影像读取_应急响应手册程序执行痕迹
  2. 【牛客挑战赛】我是 A 题
  3. css less 不要作用到子对象_不要盲目的在项目中使用LESS CSS
  4. 四款 5G 版 iPhone 12 齐发,支持北斗系统,你准备好了吗?
  5. solrcloud java_SolrCloud之zookeeper中使用java代码创建集合
  6. idea在目录中前添加目录_[LaTeX Beamer] 为目录项添加页码
  7. 基于享元记忆的 Boost.Flyweight 示例
  8. ASP.NET MVC从视图传递多个模型到Controller
  9. java蛮力法背包问题_[算法课]五种蛮力法解决01背包问题
  10. qt的如何调整显示不为科学记数法_Excel操作技巧:如何将信息快速准确的录入Excel?...
  11. JSONP原理及实现
  12. Video.js使用教程一(详解)
  13. pytorch求STFT
  14. 深度学习 + 基因组学:破译人类 30 亿碱基对
  15. jdk1.8换成11,启动项目报错java.net.MalformedURLException: unknown protocol: jrt
  16. Android系统如何修改默认打开程序
  17. 我用Python合成大西瓜!
  18. 【转】几个ARX取CAD窗口句柄的函数
  19. MarkDown显示各种好看的图案
  20. 谷粒商城项目搭建思路

热门文章

  1. dmesg时间转换工具
  2. 栈溢出笔记1.10 基于SEH的栈溢出
  3. Nmap源码分析(整体架构)
  4. C# 导入CSV文件,导出到CSV文件
  5. QT5基础操作(一)
  6. WPF xml配置文件里面的大于小于号转义
  7. 非替换元素和替换元素
  8. Linux中如何让进程(或正在运行的程序)到后台运行?[zz]
  9. 一步一步学Remoting之二:激活模式
  10. Eclipse安装Alibaba Cloud Toolkit并连接阿里云云数据库