turato 发表于 2024-7-31 13:01

Linux Shell 修改系统时间

功能背景:开发的游戏结算需要在某些时间点进行结算,在测试(游戏开发可以写代码来测试,但是测试人员可能需要走正常流程来测试)这些功能时,如果走正常流程,时间跨度很大,所以想到了修改系统时间的方法。
功能描述:修改系统时间,支持传入多个系统时间,会依次切换系统时间。
注意事项:
- 服务器一般会有时间同步服务,需要关闭,否则时间会恢复。
- 修改时间可能对系统或者依赖系统时间的应用造成影响(比如楼主写的程序,修改时间会影响定时任务的执行,所以修改时间后,需要重新启动程序,以免出现不可预知的意外),请仅在测试环境尝试。

脚本如下:
```shell
# 获取时间字符串数组作为输入参数
# 阿里云的服务先关闭时间同步:systemctl stop chronyd.service
# 入参: 时间字符串数组,使用逗号分隔
# 使用: bash change_server_times.sh "2023-07-03 18:00:00,2023-07-03 19:00:00,2023-07-03 20:30:00"

sleep 10 # 10秒后执行
IFS=',' read -ra time_array <<< "$1"

# 进入根目录
cd "$CURRENT_DIR"

# 提示修改系统时间
current_time=$(date +"%Y-%m-%d %H:%M:%S")

# 循环遍历时间字符串数组
for time in "${time_array[@]}"
do
    echo "Setting system time to $time..."
    # 设置系统时间
    sudo date -s "$time"
    # 显示系统时间
    date
done
sleep 30
# 这里可以写一些修改之间之后的需要执行的逻辑,比如重启应用
```
页: [1]
查看完整版本: Linux Shell 修改系统时间