习题分析

本题有两个核心知识点:

  1. 如何自动表示当天的日期

  2. 磁盘使用情况

打印日期的命令为 date,示例命令如下:

  # date

  2017 年 12 月 20 日 星期三 16:26:55 CST

而题目中要求的格式为应该是:2017-12-20,date 命令是有这样的功能的,示例命令如下:

  # date +%Y-%m-%d

  2017-12-20

  或者:

  # date +%F

  2017-12-20

磁盘使用情况,我们用命令 df -h 实现,示例命令如下:

  # df -h

  文件系统 容量 已用 可用 已用% 挂载点

  /dev/vda1 99G 1.8G 92G 2% /

  devtmpfs 911M 0 911M 0% /dev

  tmpfs 920M 0 920M 0% /dev/shm

  tmpfs 920M 336K 920M 1% /run

  tmpfs 920M 0 920M 0% /sys/fs/cgroup

  tmpfs 184M 0 184M 0% /run/user/0
习题答案

有了上面的分析之后,我们最终得到本题答案:

  #! /bin/bash

  d=`date +%F`

  logfile=$d.log

  df -h > $logfile
 
答案解析

把当天日期赋值给变量 d,从而定义每日的日志文件名,最终把磁盘使用情况的结果直接输入到该日志里。这里的>,比较特殊它可以把该符号左边的结果写入到该符号右边的文件里。

扩展知识点

1. shell 中反引号可以表示一个命令的结果,通常给变量赋值,示例命令如下:

  # n=`wc -l /etc/passwd|awk '{print $1}'`

  # echo $n

  23

2. date 命令还有诸多用法,示例如下:

  # date +%H ##小时

  16

  # date +%M ##分钟

  38

  # date +%S ##秒

  55

  # date +%T ##时间

  16:39:31

  # date +%w ##星期

  3

  # date -d "-1 day" +%F ##一天以前

  2017-12-19

3. >为正确重定向,我们运行一条命令时,有正确的输出信息也有错误的输出信息,>会把正确的输出信息写入到指定文件里,与其对应的还有一个错误重定向符号 2>,顾名思义它会把错误信息写入到指定文件里。示例如下:

  # ls /etc/passwd /etc/nofile ##其中/etc/nofile 是不存在的,所以会报错

  ls: 无法访问/etc/nofile: 没有那个文件或目录

  /etc/passwd

  # ls /etc/passwd /etc/nofile > /tmp/log 2>/tmp/error

  # cat /tmp/log

  /etc/passwd

  # cat /tmp/error

  ls: 无法访问/etc/nofile: 没有那个文件或目录

案例二:shell脚本获取当前日期和时间及磁盘使情况的更多相关文章

  1. shell脚本:统计分析 /home/ 目录用户磁盘使用情况

    一.统计单台机器 /home/ 目录下磁盘空间使用 top3 的用户 common.sh 脚本用于统计 /home/* 目录下存储空间 top3 的用户. du -sb /home/* |sort - ...

  2. 在 shell 脚本获取 ip、数字转换等网络操作

    在 shell 脚本获取 ip.数字转换等网络操作 ip 和数字的相互转换 ip转换为数字 :: function ip2num() { local ip=$1 local a=$(echo $ip ...

  3. PHP获取当前日期和时间的方法

    PHP获取当前日期和时间的方法 来源:wikiHow   时间:2014-12-04 14:49:45   阅读数:7240 分享到:0 [导读] PHP是用来创建网络中动态内容的常见语言,因此PHP ...

  4. shell脚本获取mysql插入数据自增长id的值

    shell脚本获取mysql插入数据自增长id的值 在shell脚本中我们可以通过last_insert_id()获取id值,但是,需要注意的是,该函数必须在执行插入操作的sql语句之后,立即调用,否 ...

  5. 关于使用java执行shell脚本获取centos的硬盘序列号和mac地址

    1.获取硬盘序列号: 新建shell脚本文件: identifier.sh, 内容为: diskdata=`fdisk -l` diskleft=${diskdata#*"identifie ...

  6. 014-交互式Shell和shell脚本获取进程 pid

    Linux 的交互式 Shell 与 Shell 脚本存在一定的差异,主要是由于后者存在一个独立的运行进程 1.交互式 Bash Shell 获取进程 pid 在已知进程名(name)的前提下,交互式 ...

  7. java如何获取当前日期和时间

    System.currentTimeMillis() 获取标准时间可以通过System.currentTimeMillis()方法获取,此方法不受时区影响,得到的结果是时间戳格式的.例如: 15431 ...

  8. JS小知识--获取当前日期的时间和上周五时间

    获取当前日期的时间和上周五时间 var today=new Date();//获取当前时间var weekday=today.getDay();//获取星期几    var monday=new Da ...

  9. 通过shell脚本获取日期,并赋给变量

    通过shell获取当前8位日期,并赋给变量,并且使用变量作为文件名,建立文件夹 代码如下: ls_date=`date +%Y%m%d` mkdir ${ls_date} 上面两句代码虽然简单 但是在 ...

随机推荐

  1. 【刷题-LeetCode】209. Minimum Size Subarray Sum

    Minimum Size Subarray Sum Given an array of n positive integers and a positive integer s, find the m ...

  2. CMake语法—缓存变量(Cache Variable)

    目录 CMake语法-缓存变量(Cache Variable) 1 CMake缓存变量 2 定义缓存变量 2.1 定义格式 2.2 定义示例代码 2.3 运行结果 2.4 小结 3 CMakeCach ...

  3. vue学习14-自定义组件添加属性

    <!DOCTYPE html> <html lang='en'> <head> <meta charset='UTF-8'> <meta http ...

  4. centos vnc配置总结

    编辑xstart [root@localhost .vnc]# vim xstartup #!/bin/sh [ -r /etc/sysconfig/i18n ] && . /etc/ ...

  5. [JavaWeb]Shiro漏洞集合——代码审计

    Shiro漏洞集合 Shiro其实就是一组Filter,他会进行验证,鉴权,会话 Management,再把请求转到web过滤器.所以最好先去对Shiro有个整体性的了解. 复现环境:https:// ...

  6. mysql加强(3)~分组(统计)查询

    一.分组(统计) 查询 1.语法 : select [distinct] *| 分组字段1[别名] [,分组字段2[别名],...] | 统计函数 from 表名 [别名] [where 条件(s)] ...

  7. find -or 用法

    find /opt/IBM/WebSphere85/ -name *loggeter* - or -name *loggetter* | xargs rm -rf

  8. python变量系列--1

    所以这里需要注意变量的使用,print(message),直接去引用,和shell略有不同 1.变量名只能包含字母,数字,下划线,但不能以数字开头 2.变量名不能含有空格

  9. 字节Android Native Crash治理之Memory Corruption工具原理与实践

    作者:字节跳动终端技术--庞翔宇 内容摘要 ​ MemCorruption工具是字节跳动AppHealth (Client Infrastructure - AppHealth) 团队开发的一款用于定 ...

  10. springcloud 实现简单的 消费者和生产者 模式(Restfule 的风格)

    一.springcloud 实现简单的 消费者和生产者 模式(Restfule 的风格) 1.实现简单的消费者和生产者 springcloud使用的http协议进行传输数据,也就是说springclo ...