tmuxのステータスバーに簡単な稼働時間を表示するには?

tmuxのステータスバーに簡単な稼働時間を表示するには?

DD:HH:MMコマンドが表示する他の内容を表示せずにtmuxステータスバーの稼働時間形式を指定したいと思いますuptime

私はこれを試しました:

#set -g status-left '#[fg=green]#H #[fg=black]•#[fg=green,bright]#(uptime|awk '{split(substr($0, index($0, "load")),a, ":"); print a[2]})'#[default]'
set -g status-right '#[fg=red,bg=default]#(uptime) #[fg=blue]%a%d-%m-%Y %H:%M:%S'

どちらも私が望む効果を得ることができませんでした。私が望むのは、uptime DD:HH:MM、30秒ごとに更新、ステータスバーを正常に更新するだけです。

答え1

ここでは、次のように必要に応じてawk解析された出力を使用できます。uptime

set -g status-right '#[fg=red,bg=default]#(uptime | awk '{print $3}'|sed 's/,//') #[fg=blue]%a%d-%m-%Y %H:%M:%S'

通常、uptime次の種類の出力が返されます。

$ uptime
 15:30:24 up  1:59,  4 users,  load average: 2.39, 2.08, 2.12

を使用すると、awk稼働時間に関するすべてのものを削除できます。

$ uptime | awk '{print $3}'|sed 's/,//'
2:47

また、それを使用/proc/uptimeしてシステムが稼働した実際の時間(秒)を取得し、秒を日、時間、分などとして使用または変換することもできますawkperl

$ awk '{printf("%d:%02d:%02d:%02d",($1/60/60/24),($1/60/60%24),($1/60%60),($1%60))}' /proc/uptime
0:02:49:55

稼働時間を秒単位で表示します(DD:HH:MM:SS)。

Perlを使用して表示することもできます。

$ cat /proc/uptime |  perl -ne '/(\d*)/ ; printf "%02d:%02d:%02d:%02d\n",int($1/86400),int(($1%86400)/36003600)/60),$1%60' 
00:02:50:53

tmux参照?

@JasonwRyanがコメントで述べたように、tmuxコマンドを正しく引用することは非常に困難です。awk上記の例は、次の方法で参照できます。

set -g status-right '#[fg=red,bg=default]#(uptime | awk \"{print \\$3}\"|sed \"s/,//\") #[fg=blue]%a%d-%m-%Y %H:%M:%S'

ただし、コマンドをシェルスクリプトに入れて設定ファイルから呼び出すのはtmux簡単です。

set -g status-right '#[fg=red,bg=default]#(somecommand.bash) #[fg=blue]%a%d-%m-%Y %H:%M:%S'

引用する

答え2

別の方法は、次のものを使用することですuptime -p

#(uptime -p)

出力例:

up 4 hours, 17 minutes

私はこれがまさにあなたが望むものではないことを知っていますが、ほぼ近いです。

関連情報