AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 891608
Accepted
Heinz39
Heinz39
Asked: 2018-01-11 09:14:55 +0800 CST2018-01-11 09:14:55 +0800 CST 2018-01-11 09:14:55 +0800 CST

修改iostat -t时间输出格式

  • 772

我试图绘制各种 iostat 结果的结果。为此,我想使用https://clusterbuffer.wordpress.com/file-system-tools/iostat_plot/iostat-plotter-v3/。

无论如何 - 由于某些莫名其妙的原因,该脚本具有它期望硬编码的时间格式,并且它期望 12 小时 AM/PM 时间格式,我不认为这是任何 linux 语言环境设置的一部分。我正在寻找一种方法来告诉 iostat -t 以 AM/PM 格式输出,但我失败了。据说它使用了我不知道的环境变量 S_TIME_FORMAT 并且似乎是 iostat 特定的并且没有记录。系统/用户 LC_TIME 像往常一样设置为“C”。知道如何哄 iostat 使用 am/pm 格式吗?由于 iostat 是二进制文件,我无法修改它调用 strftime/localtime 的方式。提前致谢!

# locale
LANG=en_US.UTF-8
LC_CTYPE="C"
LC_NUMERIC="C"
LC_TIME="C"
LC_COLLATE="C"
LC_MONETARY="C"
LC_MESSAGES="C"
LC_PAPER="C"
LC_NAME="C"
LC_ADDRESS="C"
LC_TELEPHONE="C"
LC_MEASUREMENT="C"
LC_IDENTIFICATION="C"
LC_ALL=C 
localization
  • 3 3 个回答
  • 480 Views

3 个回答

  • Voted
  1. Best Answer
    Ondřej Xicht Světlík
    2018-01-11T09:38:32+08:002018-01-11T09:38:32+08:00

    您要查找的语言环境是 en_US:

    [xxx]# export LANG=C
    [xxx]# iostat -t
    Linux 4.14.8-300.fc27.x86_64 (osvetlik.unicorn)     01/10/18    _x86_64_    (4 CPU)
    
    01/10/18 18:36:47
    avg-cpu:  %user   %nice %system %iowait  %steal   %idle
              26.26    0.09    5.56    0.09    0.00   68.00
    
    [xxx]# export LANG="en_US.UTF-8"
    [xxx]# locale
    LANG=en_US.UTF-8
    LC_CTYPE="en_US.UTF-8"
    LC_NUMERIC="en_US.UTF-8"
    LC_TIME="en_US.UTF-8"
    LC_COLLATE="en_US.UTF-8"
    LC_MONETARY="en_US.UTF-8"
    LC_MESSAGES="en_US.UTF-8"
    LC_PAPER="en_US.UTF-8"
    LC_NAME="en_US.UTF-8"
    LC_ADDRESS="en_US.UTF-8"
    LC_TELEPHONE="en_US.UTF-8"
    LC_MEASUREMENT="en_US.UTF-8"
    LC_IDENTIFICATION="en_US.UTF-8"
    LC_ALL=
    [xxx]# iostat -t
    Linux 4.14.8-300.fc27.x86_64 (osvetlik.unicorn)     01/10/2018  _x86_64_    (4 CPU)
    
    01/10/2018 06:37:41 PM
    avg-cpu:  %user   %nice %system %iowait  %steal   %idle
              26.25    0.09    5.56    0.09    0.00   68.01
    

    这里重要的语言环境变量是LC_TIME(但您必须更改LC_ALL以防设置它,因为它会阻止其他LC_变量的不同设置)。您必须将此变量设置en_US为具有正确格式的时间。仅LANG设置为en_US无济于事。只需使用locale命令来验证LC_TIME设置是否正确。

    无LC_ALL设置输出:

    [xxx]# export LC_ALL= 
    [xxx]# export LC_TIME="en_US.UTF-8"
    [xxx]# locale
    LANG=C
    LC_CTYPE="C"
    LC_NUMERIC="C"
    LC_TIME=en_US.UTF-8
    LC_COLLATE="C"
    LC_MONETARY="C"
    LC_MESSAGES="C"
    LC_PAPER="C"
    LC_NAME="C"
    LC_ADDRESS="C"
    LC_TELEPHONE="C"
    LC_MEASUREMENT="C"
    LC_IDENTIFICATION="C"
    LC_ALL=
    [xxx]# iostat -t
    Linux 4.14.8-300.fc27.x86_64 (osvetlik.unicorn)     01/12/2018  _x86_64_    (4 CPU)
    
    01/12/2018 09:48:05 AM
    

    并与LC_ALL:

    [xxx]# export LC_ALL="en_US.UTF-8"
    [xxx]# locale
    LANG=C
    LC_CTYPE="en_US.UTF-8"
    LC_NUMERIC="en_US.UTF-8"
    LC_TIME="en_US.UTF-8"
    LC_COLLATE="en_US.UTF-8"
    LC_MONETARY="en_US.UTF-8"
    LC_MESSAGES="en_US.UTF-8"
    LC_PAPER="en_US.UTF-8"
    LC_NAME="en_US.UTF-8"
    LC_ADDRESS="en_US.UTF-8"
    LC_TELEPHONE="en_US.UTF-8"
    LC_MEASUREMENT="en_US.UTF-8"
    LC_IDENTIFICATION="en_US.UTF-8"
    LC_ALL=en_US.UTF-8
    [xxx]# iostat -t
    Linux 4.14.8-300.fc27.x86_64 (osvetlik.unicorn)     01/12/2018  _x86_64_    (4 CPU)
    
    01/12/2018 09:49:38 AM
    

    简短的解决方案:

    LC_ALL="en_US.UTF-8" iostat -t
    
    • 0
  2. Heinz39
    2018-01-12T00:51:31+08:002018-01-12T00:51:31+08:00

    不能在注释中使用格式,所以在这里粘贴代码块:

    系统甚至已经在 /etc/locale.conf 中定义了该语言环境。不幸的是,不是这样:

    [root@xxx]# echo $LANG
    en_US.UTF-8
    [root@xxx]# iostat -t
    Linux 3.10.0-514.6.1.el7.x86_64 (xxx)  01/11/18        _x86_64_            (48 CPU)
    
    01/11/18 08:43:46
    avg-cpu:  %user   %nice %system %iowait  %steal   %idle
    [...]
    
    • 0
  3. Heinz39
    2018-01-12T05:16:27+08:002018-01-12T05:16:27+08:00

    在 Ondřej 的帮助下,我想通了。

    LC_ALL=en_US.UTF-8 iostat -t    
    

    作品。

    • 0

相关问题

  • 设置 Linux 时区

  • Debian 上的审计表的 Oracle 数据库字符集问题

  • IIS 时区和夏令时更改

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve