案例二:shell腳本獲取當前日期和時間及磁盤使情況


習題分析

本題有兩個核心知識點:

  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: 沒有那個文件或目錄


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM