makerbase-timezone-monitor.service files

Contents:


/usr/lib/systemd/system/makerbase-timezone-monitor.service

[Unit]
Description=Timezone Monitor Service
After=network.target

[Service]
ExecStart=/root/set-timezone.sh

[Install]
WantedBy=multi-user.target

/root/set-timezone.sh

  • Update timezone to that from /home/mks/target_timezone.txt
  • Fetches time via NTP every 3 seconds, effectively spams syslog
#!/bin/bash

synced=false

while true; do
    # 读取目标时区文件
    target_tz=$(cat /home/mks/target_timezone.txt)

    echo "目标时区是:$target_tz"

    # 使用timedatectl命令获取当前时区
    current_tz=$(timedatectl show --property=Timezone --value)

    echo "当前时区是:$current_tz"

    # 检查当前时区与目标时区是否匹配
    if [ "$current_tz" != "$target_tz" ]; then
        # 检查目标时区是否有效
        if timedatectl list-timezones | grep -q "^$target_tz$"; then
            # 使用timedatectl命令修改系统时区
            sudo timedatectl set-timezone "$target_tz"
            echo "系统时区已成功更改为$target_tz"
        else
            echo "无效的时区: $target_tz"
        fi
    fi

    # 验证时间是否正确设置为新时区
    current_time=$(date)
    echo "当前时间: $current_time"

    # 延时5秒
    sleep 3
	
	if ! $synced; then		
		if ping -c 1 -W 3 ntp.aliyun.com &> /dev/null; then
			echo "网络连接正常"
			# 进行NTP时间同步
			/usr/sbin/ntpdate ntp.aliyun.com >/dev/null 2>&1
			
			synced=true
			echo "时间已成功同步"
		else
			echo "无法连接到网络"
		fi
	fi
	
	if ! $synced; then
		
		if ping -c 1 -W 3 pool.ntp.org &> /dev/null; then
			echo "网络连接正常"

			# 进行NTP时间同步
			/usr/sbin/ntpdate pool.ntp.org >/dev/null 2>&1
			synced=true
			echo "时间已成功同步"
		else
			echo "无法连接到网络"
		fi
	fi
	

done

Back to start