每日生成一个固定日期格式的文件,并将磁盘的使用情况记录到文件中

2022-01-06 14:09:48 浏览数 (2)

  • 要求:
    • 按照(xxxx-xx-xx)这样的日期格式每日生成一个文件,比如今天生成的文件为2018-2-7.log,并且把磁盘的使用情况写到这个文件中(不考虑cron,仅仅写脚本)
  • 需求分析
    • 这个脚本中有两点,一是按照日期的格式来生成文件
    • 二是把磁盘的使用情况写到这个文件中
  • 实现
  • 日期文件格式为(xxxx-xx-xx),两种方法实现,date命令笔记
  • date %F
  • date %Y-%m-%d
代码语言:javascript复制
[root@hf-01 ~]# date  %F
2018-02-07

[root@hf-01 ~]# date  %Y-%m-%d
2018-02-07
  1. 查看磁盘使用情况,df命令笔记
  2. df 命令查看磁盘使用情况
    • -h可以适当的使用单位,来显示磁盘使用情况
代码语言:javascript复制
[root@hf-01 ~]# df -h
文件系统        容量  已用  可用 已用% 挂载点
/dev/sda3        18G  6.5G   12G   37% /
devtmpfs        488M     0  488M    0% /dev
tmpfs           494M     0  494M    0% /dev/shm
tmpfs           494M  6.7M  487M    2% /run
tmpfs           494M     0  494M    0% /sys/fs/cgroup
/dev/sda1       197M   75M  122M   39% /boot
tmpfs            99M     0   99M    0% /run/user/0
[root@hf-01 ~]# 

脚本

代码语言:javascript复制
[root@hf-01 hanfeng]# vim 01.sh
[root@hf-01 hanfeng]# cat 01.sh
#! /bin/bash
d=`date  %F`
logfile=$d.log
df -h >$logfile
[root@hf-01 hanfeng]# sh -x 01.sh
   date  %F
  d=2018-02-07
  logfile=2018-02-07.log
  df -h
[root@hf-01 hanfeng]# ls
01.sh  2018-02-07.log
[root@hf-01 hanfeng]# cat 2018-02-07.log 
文件系统        容量  已用  可用 已用% 挂载点
/dev/sda3        18G  6.5G   12G   37% /
devtmpfs        488M     0  488M    0% /dev
tmpfs           494M     0  494M    0% /dev/shm
tmpfs           494M  6.7M  487M    2% /run
tmpfs           494M     0  494M    0% /sys/fs/cgroup
/dev/sda1       197M   75M  122M   39% /boot
tmpfs            99M     0   99M    0% /run/user/0
[root@hf-01 hanfeng]# 
  • 会看到当前目录下,生成了2018-02.07.log的日志文件,并且这个日志文件中记录了是磁盘的使用情况

扩展

  1. shell脚本中反引号可以表示为一个命令的结果,通常给变量赋值(PS:注意在赋值等于号两边不要有空空格,否则会报错,比如 n=wc -l /etc/passwd ,但若是n= wc -l /etc/passwd就会报错)
代码语言:javascript复制
[root@hf-01 hanfeng]# n=`wc -l /etc/passwd |awk '{print $1}'`
[root@hf-01 hanfeng]# echo $n
23
[root@hf-01 hanfeng]# 
  1. 符号 > 为正确重定向,在运行一条命令的时候,会有正确和错误的输出信息,>会把正确的输出信息输入到指定文件里,而 2> 会把错误的信息写入到指定文件里

小练习

  • 需求
    • 每日生成一个固定日期格式的文件,并将根目录下的所有文件名记录到文件中
代码语言:javascript复制
[root@hf-01 shell]# cat 001.sh
#! /bin/bash
d=`date  %F`
wenjian=$d.log
ls -l / > $wenjian
echo "$wenjian" > /tmp/log
[root@hf-01 shell]# sh -x 001.sh
   date  %F
  d=2018-02-08
  wenjian=2018-02-08.log
  ls -l /
  echo 2018-02-08.log
[root@hf-01 shell]# 

改良版本

代码语言:javascript复制
#/bin/bash
read  -p "请输入目录路径:"  a
if  [  !  -d  $a ]
then
echo "$a不是目录"
else
d=`date  %F`
ls -l  $a > /tmp/$d.log
echo "$a是目录"
fi

0 人点赞