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하여 시스템이 작동한 실제 시간(초)을 얻은 다음 초를 일, 시간, 분 등으로 사용하거나 변환할 awk수 있습니다.perl

$ 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

나는 이것이 정확히 당신이 원하는 것이 아니라는 것을 알고 있지만 거의 가깝습니다.

관련 정보