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
- 查看磁盘使用情况,df命令笔记
- df 命令查看磁盘使用情况
代码语言: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的日志文件,并且这个日志文件中记录了是磁盘的使用情况
扩展
- 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]#
- 符号 > 为正确重定向,在运行一条命令的时候,会有正确和错误的输出信息,>会把正确的输出信息输入到指定文件里,而 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