簡體   English   中英

如何在Bash(正常運行時間)中處理特定的輸出?

[英]How can I manipulate a specific output in Bash (uptime)?

因此,不久前我一直在嘗試使用Bash,我想操縱“運行時間”命令的輸出。 例如,如果正常運行時間為5分鍾,我設法將x分鍾的輸出更改為0:05,但是其余的一切消失了。

在不影響我的當前正常運行時間輸出的情況下,我應該使用哪種方法來顯示時間,用戶數量及其平均負載。

這是所需的輸出:21:08:13向上0:10,3個用戶,平均負載:0.30、0.30、0.25

任何幫助,將不勝感激!

since="`uptime --since`"
start="`date --date "$since" '+%s'`"
now="`date '+%s'`"
sec=$((now-start))

days=$((sec/(60*60*24)))
sec=$((sec-days*(60*60*24)))

hr=$((sec/(60*60)))
sec=$((sec-hr*(60*60)))

min=$((sec/60))
sec=$((sec-min*60))

rest="$(uptime | perl -npe'{s/(.*,\s+)(\d+\s+user)/$2/}')"

printf "%d(days), %02d:%02d:%02d(hms), %s\n" $days $hr $min $sec "$rest"

電流輸出

0(days), 00:34:00(hms), 3 users, load average: 0.09, 0.14, 0.14

這可能是一種只使用正常運行時間,日期以及當然bash的方式:

#!/bin/bash

since="`uptime --since`"
start="`date --date "$since" '+%s'`"
now="`date '+%s'`"
sec=$((now-start))

days=$((sec/(60*60*24)))
sec=$((sec-days*(60*60*24)))

hr=$((sec/(60*60)))
sec=$((sec-hr*(60*60)))

min=$((sec/60))
sec=$((sec-min*60))

printf "%d(days), %02d:%02d:%02d(hms)\n" $days $hr $min $sec

使用您的輸出到名為date的文件中,我嘗試了此操作:

cat date | awk '{print $1 " "  $2 " "  0 ":"  $3  "," $5 " " $6 " " $7 " " $8 " " $9 " " $10 " " $11}'

21:08:13 up 0:10,4 users, load average: 0.30, 0.30, 0.25

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM