Localization
修改iostat -t時間輸出格式
我試圖繪製各種 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
您要查找的語言環境是 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