繁体   English   中英

为 df output 命令上的每一行添加时间戳?

[英]Add timestamp for each line on the df output command?

我想为 df output 命令的每一行添加日期。

我尝试:

df -m | awk '{print `date +%Y-%m`";"$1";"$2";"$3 }'

但它不起作用...

任何想法?

这是一个替代方案:

df -m | awk '{print strftime("%Y-%m"), $0}'

这是上面命令中的 output:

$ df -m | awk '{print strftime("%Y-%m"), $0}'
2019-10 Filesystem                     1M-blocks   Used Available Use% Mounted on
2019-10 devtmpfs                            9852      0      9852   0% /dev
2019-10 tmpfs                               9871    132      9740   2% /dev/shm
2019-10 tmpfs                               9871      2      9869   1% /run
2019-10 /dev/mapper/fedora_canvas-root     50141  14731     32834  31% /
2019-10 tmpfs                               9871      1      9871   1% /tmp
2019-10 /dev/sda5                            976    243       667  27% /boot
2019-10 /dev/mapper/fedora_canvas-home   1277155 217435    994777  18% /home
2019-10 tmpfs                               1975     63      1912   4% /run/user/1000
$ 

这是一个替代版本,仅在 OP 上打印您想要的 3 列:

df -m | awk '{print strftime("%Y-%m"), $1, $2, $3}' | column -t

以及对应的output:

$ df -m | awk '{print strftime("%Y-%m"), $1, $2, $3}' | column -t
2019-10  Filesystem                      1M-blocks  Used
2019-10  devtmpfs                        9852       0
2019-10  tmpfs                           9871       132
2019-10  tmpfs                           9871       2
2019-10  /dev/mapper/fedora_canvas-root  50141      14731
2019-10  tmpfs                           9871       1
2019-10  /dev/sda5                       976        243
2019-10  /dev/mapper/fedora_canvas-home  1277155    217435
2019-10  tmpfs                           1975       63
$

Perl 解决方案。

df -m | perl -MPOSIX=strftime -alpe '$_ = strftime("%Y-%M ", localtime) . "@F[0..2]"'

命令行选项:

  • -M:从 POSIX 模块加载strftime() function
  • -a:将空格上的输入记录自动拆分为@F
  • -l:从输入中删除换行符并将它们添加到 output
  • -p:将每条输入记录放入$_ ,执行代码然后打印$_
  • -e:为每个输入记录运行此代码

代码通过将日期 ( strftime("%Y-%M ", localtime) ) 与输入记录的前三列 ( @F[0.. 2] ) 连接来更新$_

你可以这样使用:

df -m | awk -v dt=$(date "+%Y-%m") '{print dt "::", $0}'

我们使用-v dt=$(date "+%Y-%m")在 shell 中执行 date 命令,并在参数dt中将其传递给awk

如果您只需要df命令 output 的前 3 列,请使用:

df -m | awk -v dt=$(date "+%Y-%m") '{print dt, $1, $2, $3}'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM