가동 시간을 일반적인 단위로 표시하고 싶습니다(따라서 1시간이 넘는 경우에는 분만 표시하지 않고 1분이 넘는 경우에는 초만 표시하지 않습니다. 예를 들어 "1:02:30"은 i3status 열에서 1시간, 2분, 30초를 의미합니다. 내가 찾은 어떤 단위에서도 가동 시간을 표시하는 방법조차 찾을 수 없습니다.이 창고GitHub에서는 이것이 가능하다고 주장하는 것 같지만 이러한 구성을 복사하면 status_command
이 줄을 실행하는 데 어려움이 있다는 오류가 발생합니다.창고 구성. 즉, 그 status_command
줄은 다음과 같습니다:
status_command ~/.i3/i3status.sh ~/.i3/i3status.conf
i3 이전 버전에서만 작동하는 것 같아요. 이 작업을 수행하는 방법에 대한 아이디어가 있습니까?여기이것이 내 현재 ~/.i3status.conf
파일입니다. 내 배포판은 Gentoo Linux입니다.
답변1
해결책을 찾았습니다. 나는 그것의 구문을 잘 이해하지 못합니다. 파일 을 편집하면 됩니다 ~/.i3/i3status.sh
. 지금은:
#!/bin/sh
/usr/bin/i3status -c $HOME/.i3status.conf | while :
do
read line
RAM=`free -kh | grep Mem | awk '{print $3}'`
TOTR=$(cat /proc/meminfo | grep MemT | sed 's/.*\://g' | sed 's/ *//g' | sed 's/kB//g')
TOT=$(octave --eval "$TOTR/1024^2" | sed 's/ans = *//g' | sed 's/$/G/g' )
# Put uptime
uptime=`uptime | awk '{print $3 " " $4}' | sed 's/,.*//'`
hour=$(echo $uptime | sed 's/\:.*//g')
min=$(echo $uptime | sed 's/.*\://g')
UP="$hour h $min m"
# Compile C++ CPU prog and run it
g++ -o cpu.o $HOME/.i3/cpu.cpp
CPU=$(./cpu.o)
printf "%s\n" "Up: $UP | CPU: $CPU% | RAM: $RAM/$TOT | $line"
done
가동 시간과 가장 관련이 있는 줄은 및 최종 명령 사이 # Put uptime
에 # Compile C++...
있습니다 printf "%s\n"...
. 내 전체 i3 구성 파일은 다음에서 찾을 수 있습니다.이 저장소.
답변2
내 솔루션:
cron.hourly에 스크립트를 생성하여 매 시간 형식을 생성하고 /tmp/uptime
(1시간보다 더 높은 정밀도는 필요하지 않음) i3status에서 readfile과 함께 사용합니다.
read_file uptime {
path = "/tmp/uptime"
}
스크립트:
#!/bin/sh
awk '{printf("Up %dd:%02d\n",($1/60/60/24),($1/60/60%24),($1/60%60),($1%60))}' /proc/uptime > /tmp/uptime