在板子上安装一个程序bmc-server,程序开机启动要去网络上安装mosquitto,如果不做任何处理,会报各种网络错误。
-
Exiting, name server cannot be used: Temporary failure in
https://blog.csdn.net/weixin_43681796/article/details/89289010
一种情况是nameserver配置的问题,一种情况是执行ntpdate cn.ntp.org.cn
太提前了,系统/etc/resolv.conf文件还没有来得及解析完成。 -
the NTP socket is in use, exiting
https://blog.51cto.com/weimouren/2387130
系统开机会开启一个ntp服务,但是/etc/rc.local执行完之前,好像一直会同步不成功。这时想自己执行一下ntpdate cn.ntp.org.cn
指令,就会报这个错误。需要把系统的开启的ntp服务先干掉:pid=`ps -ef|grep "ntpd"|grep -v grep|awk '{print $2}'` echo "ntpd pid:$pid" kill -9 $pid ntpdate cn.pool.ntp.org
ntpdate命令是异步执行的,并不会阻塞后面指令的执行。
-
timedatectl 判断时间同步完成与否
会发现Local time这一项已经同步完成了,但是System clock synchronized还是no.所以只能截取Local time判断时间是否同步完成。
count=0
while [ $result \< "2022-10-14" ]
do
echo "等待时间同步,然后才去更新镜像."
sleep 3s
count=$(($count+1))
if [ $count -ge 10 ];then
echo "30秒过去了,系统时间还没有同步完成,程序已自动退出..."
exit 0
fi
result=$(timedatectl | grep "Local time" | cut -f2 -d":" | sed 's/ //g')
result=$(expr substr $result 2 10)
done
但是上面这种把时间写死的算法随着时间的推移可能会有问题,所以还是要找到时间同步完成的准确判断条件。
续
根据对RTC的研究,可以知道RTC获取的默认时间应该是固定不变的,所以这种判断时间是否同步完成的方法是没有问题的。
0 条评论