![tmux의 상태 표시줄에 간단한 가동 시간을 표시하는 방법은 무엇입니까?](https://linux55.com/image/45276/tmux%EC%9D%98%20%EC%83%81%ED%83%9C%20%ED%91%9C%EC%8B%9C%EC%A4%84%EC%97%90%20%EA%B0%84%EB%8B%A8%ED%95%9C%20%EA%B0%80%EB%8F%99%20%EC%8B%9C%EA%B0%84%EC%9D%84%20%ED%91%9C%EC%8B%9C%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
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
나는 이것이 정확히 당신이 원하는 것이 아니라는 것을 알고 있지만 거의 가깝습니다.