NanoPi의 RTC 설정 스크립트
- 최초 작성일: 2023년 8월 23일(수)
목차
[TOC]
전체 개요
이 스크립트는 사용자로부터 연, 월, 일, 시, 분, 초를 입력 받아 NanoPi의 시스템 시간을 설정하고, 해당 시간을 하드웨어 클록(RTC)에 동기화하는 역할을 한다.
코드
#!/bin/bash
# kjh [2023.08.23]
# NanoPi set RTC
#echo "$0 start"
year=$1
mon=$2
day=$3
hour=$4
min=$5
sec=$6
if [ -z $1 ] || [ -z $2 ] || [ -z $3 ] || [ -z $4 ] || [ -z $5 ] || [ -z $6 ]
then
echo "para error !!! year mon day hour min(*hour 24 format) "
exit 0
fi
date -s "$1-$2-$3 $4:$5:$6"
sleep 1
hwclock --localtime --systohc
#check
YEAR=`sudo date +"%Y %m %d %H %M" | gawk -F" " '{print $1}'`
MON=`sudo date +"%Y %m %d %H %M" | gawk -F" " '{print $2}'`
DAY=`sudo date +"%Y %m %d %H %M" | gawk -F" " '{print $3}'`
HOUR=`sudo date +"%Y %m %d %H %M" | gawk -F" " '{print $4}'`
MIN=`sudo date +"%Y %m %d %H %M" | gawk -F" " '{print $5}'`
if [ "$2" == "$MON" ]; then
echo "MON same"
else
echo "MON not same"
date -s "$1-$2-$3 $4:$5:$6"
sleep 1
hwclock --localtime --systohc
fi
if [ "$3" == "$DAY" ]; then
echo "DAY same"
else
echo "DAY not same"
date -s "$1-$2-$3 $4:$5:$6"
sleep 1
hwclock --localtime --systohc
fi
if [ "$4" == "$HOUR" ]; then
echo "HOUR same"
else
echo "HOUR not same"
date -s "$1-$2-$3 $4:$5:$6"
sleep 1
hwclock --localtime --systohc
fi
#echo "$0 end"
설명
- 연, 월, 일, 시, 분, 초 인자를 받는다.
year=$1
mon=$2
day=$3
hour=$4
min=$5
sec=$6
- 실행 시, 모든 인자가 정확히 입력되었는지 확인하며, 만약 그렇지 않다면 에러 메시지를 출력하고 스크립트를 종료한다.
if [ -z $1 ] || [ -z $2 ] || [ -z $3 ] || [ -z $4 ] || [ -z $5 ] || [ -z $6 ]
then
echo "para error !!! year mon day hour min(*hour 24 format) "
exit 0
fi
date
명령어를 이용해 시스템 시간을 사용자가 입력한 값으로 설정한다.
date -s "$1-$2-$3 $4:$5:$6"
- 이후
hwclock
명령어를 사용해 시스템 시간을 하드웨어 클록에 동기화한다.
hwclock --localtime --systohc
date
명령어와gawk
를 결합하여 현재 시스템의 연, 월, 일, 시, 분 값을 추출한다.
YEAR=`sudo date +"%Y %m %d %H %M" | gawk -F" " '{print $1}'`
MON=`sudo date +"%Y %m %d %H %M" | gawk -F" " '{print $2}'`
DAY=`sudo date +"%Y %m %d %H %M" | gawk -F" " '{print $3}'`
HOUR=`sudo date +"%Y %m %d %H %M" | gawk -F" " '{print $4}'`
MIN=`sudo date +"%Y %m %d %H %M" | gawk -F" " '{print $5}'`
- 마지막 부분에서는 사용자의 입력값과 현재 시스템의 시간을 비교하며, 일치하지 않는 경우 시간을 다시 설정하고 RTC를 동기화한다.
이 스크립트는 특히 시간 설정이 중요한 임베디드 환경에서 유용하게 사용된다.