
가동 시간을 일반적인 단위로 표시하고 싶습니다(따라서 1시간이 넘는 경우 분 단위가 아니라 1분이 넘는 경우에도 초 단위가 아닙니다. 예: 1시간 2분은 "1:02:30", 내 i3status 표시줄에서는 30초가 이상적인 시간 형식입니다. 어떤 장치에서든 i3status 표시줄에 가동 시간을 표시하는 방법조차 찾지 못했습니다. 나는 찾았다이 저장소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에서 스크립트를 만들어 1시간마다 형식을 생성하고 /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