Linux 系统时间同步方法小结

windows 中,系统时间的设置非常直观,通过界面操作即可完成,设置后无论重启还是关机,系统时间都会自动保存到 bios 时钟中,启动计算机时,系统会从 bios 中获取硬件时间,确保时间的连续性。然而,在 linux 中,默认情况下,系统时间和硬件时间并不会自动同步。linux 运行过程中,系统时间和硬件时间以异步方式运行,互不干扰。硬件时间依赖于 bios 电池来维持,而系统时间则由 cpu tick 维持。在系统启动时,linux 会从 bios 中读取硬件时间并设置为系统时间。

1. Linux 系统时间的设置

在 Linux 中,可以使用 date 命令来设置系统时间:

// 查看时间[root@node1 ~]# dateTue Feb 25 20:15:18 CST 2014

// 修改时间[root@node1 ~]# date -s "20140225 20:16:00" # yyyymmdd hh:mm:ssTue Feb 25 20:16:00 CST 2014

// date 命令支持多种时间格式,详细信息请查看 date --help

2. Linux 硬件时间的设置

硬件时间的设置可以使用 hwclockclock 命令。这两个命令基本相同,通常只需使用其中一个即可。clock 命令除了支持 x86 硬件体系外,还支持 Alpha 硬件体系。

// 查看硬件时间,可以使用 hwclock,hwclock --show 或 hwclock -r[root@node1 ~]# hwclock --showTue 25 Feb 2014 08:21:14 PM CST -0.327068 seconds

// 设置硬件时间[root@node1 ~]# hwclock --set --date "20140225 20:23:00"[root@node1 ~]# hwclockTue 25 Feb 2014 08:23:04 PM CST -0.750440 seconds

3. 系统时间和硬件时间的同步

可以使用 hwclock 命令来同步系统时间和硬件时间。

// 以系统时间为基准,修改硬件时间[root@node1 ~]# hwclock --systohc

4. 不同机器之间的时间同步

为了避免主机时间因长时间运行而产生偏差,同步时间是必要的。Linux 系统通常使用 NTP 服务器来同步不同机器的时间。一台机器可以同时作为 NTP 服务端和客户端。在生产环境中,建议使用类似 DNS 服务器的分层时间服务器来同步时间。

4.1 ntpdate 命令

使用 ntpdate 命令进行时间同步非常简单,格式如下:

1 [root@node1 ~]# ntpdate [NTP IP/hostname]2 [root@node1 ~]# ntpdate 192.168.0.13 [root@node1 ~]# ntpdate cn.pool.ntp.org

ntpdate 命令:

ntpdate -u cn.pool.ntp.org:网络时间同步命令

注意:若不加上 -u 参数,会出现以下提示:no server suitable for synchronization found

-u:从 man ntpdate 中可以看出,-u 参数可以越过防火墙与主机同步。

常用 NTP 服务器:

美国:time.nist.gov

复旦:ntp.fudan.edu.cn

微软公司授时主机(美国):time.windows.com

台警大授时中心(台湾):asia.pool.ntp.org

这种同步方式只是强制将系统时间设置为 NTP 服务器的时间。如果 CPU Tick 有问题,只是治标不治本。因此,一般建议结合 cron 命令,定期进行同步。比如,在 crontab 中添加:

0 12   * /usr/sbin/ntpdate 192.168.0.1

这样,每天的 12 点整会同步一次时间,NTP 服务器为 192.168.0.1

或者将下列脚本添加到 /etc/cron.hourly/,每小时执行一次同步:

#!/bin/bash

$Id: sync-clock,v 1.6 2009/12/23 15:41:29 jmates Exp $

Use ntpdate to get rough clock sync with department of Genome Sciences

time server.

NTPDATE=/usr/sbin/ntpdateSERVER="192.168.0.1 "

if running from cron (no tty available), sleep a bit to space

out update requests to avoid slamming a server at a particular time

if ! test -t 0; thenMYRAND=$RANDOMMYRAND=${MYRAND:=$$}if [ $MYRAND -gt 9 ]; thensleep echo $MYRAND | sed 's/.*(..)$/1/' | sed 's/^0//'fifi

$NTPDATE -su $SERVER

update hardware clock on Linux (RedHat?) systems

if [ -f /sbin/hwclock ]; then/sbin/hwclock --systohcfi

4.2 ntpd 服务

使用 ntpd 服务比 ntpdatecron 的组合更优,因为 ntpdate 同步时间会导致时间突变和跳跃,对依赖时间的程序和服务(如 sleeptimer 等)会造成影响。而且 ntpd 服务可以在修正时间的同时,修正 CPU Tick。因此理想的做法是在开机时使用 ntpdate 强制同步时间,在其他时间使用 ntpd 服务来同步时间。

安装 ntpd 服务:

yum install ntp -y                          # 安装 NTP 服务

获取当前系统的时区,如果时区为 (Shanghai) 则打印,如果不是则利用 || 符号

如果执行失败,则执行 || 后面的命令

timedatectl | grep 'Shanghai' || timedatectl set-timezone Asia/Shanghai # 将当前主机的时区设为 亚洲/上海systemctl enable ntpd.service # 开机自启动systemctl restart ntpd.service # 启动 NTP 服务守护程序firewall-cmd --add-service=ntpfirewall-cmd --add-service=ntp --permanent # 在防火墙上开放 NTP 服务

需要注意的是,ntpd 有一个自我保护机制:如果本机与上源时间相差太大,ntpd 不会进行时间同步操作。因此,新设置的时间服务器一定要先用 ntpdate 从上源取得时间初值,然后启动 ntpd 服务。ntpd 服务运行后,先是每 64 秒与上源 NTP 服务器同步一次,根据每次同步时测得的误差值经复杂计算逐步调整自己的时间,随着误差减小,逐步增加同步的间隔。每次跳动,都会重复这个调整的过程。

与内网 NTP 服务器同步,只需安装 ntpdate 软件:

yum -y install ntpdate

但需添加计划任务,让服务器周期性与内网 NTP 服务器同步:

vi  /var/spool/cron/root(或crontab -e)

在每天的 0 点 10 分、8 点 10 分、16 点 10 分与时间同步服务器进行同步并写入 BIOS:

10 0,8,16     /usr/sbin/ntpdate 10.3.5.5; /sbin/hwclock -w

如果同步不正常,可以将输出日志写入 1.txt,或查看系统日志或 /var/mail/root 系统邮件:

0 /8    *  /usr/sbin/ntpdate 10.3.5.5 >>/tmp/1.txt; /sbin/hwclock -w

也可以编辑 cat /etc/sysconfig/ntpdate 中的 SYNC_HWCLOCK=yes 来自动同步到硬件时间。

4.3. ntpd 服务的设置

ntpd 服务的相关设置文件如下:

(1)/etc/ntp.conf:这是 NTP daemon 的主要配置文件,也是 NTP 的唯一配置文件。

(2)/usr/share/zoneinfo/:在这个目录下的文件实际上是规定了各主要时区的时间配置文件,例如北京地区的时区配置文件在 /usr/share/zoneinfo/Asia/Shanghai

(3)/etc/sysconfig/clock:这个文件不包含在 NTP 的 daemon 中,因为它是 Linux 的主要时区配置文件。每次开机后,Linux 会自动读取这个文件来设置自己系统所默认要显示的时间。

(4)/etc/localtime:这个文件是“本地端的时间配置文件”。刚刚那个 clock 文件里面规定了使用的时间设置文件(ZONE)为 /usr/share/zoneinfo/Asia/Shanghai,所以这就是本地端的时间了,此时,Linux 系统就会将 Shanghai 那个文件另存为一份 /etc/localtime 文件,所以未来我们的时间显示就会以 Beijing 那个时间设置文件为准。

预订宝酒店预订系统 预订宝酒店预订系统

预订宝酒店预订系统是预订宝旅游电子商务团队集6年行业运营经验和雄厚的技术实力,历经一年时间,开发完成的一套功能强大、性能卓越的在线酒店预订解决方案。10分钟轻松搭建完全属于自己的酒店预订网站!预订宝酒店预订系统是开源、免费的,依托我们非常强势的上游支持,该系统拥有如下的几大特色:丰富的签约酒店资源:系统集成20000余家酒店资料,并提供房价与房态实时同步更新与维护。全面的网站管理功能:系统提供全面

预订宝酒店预订系统 0 查看详情 预订宝酒店预订系统

下面重点介绍 /etc/ntp.conf 文件的设置。在 NTP Server 的设置上,建议不要对 Internet 无限制地开放,尽量仅提供局域网内部的 Client 端联机进行网络校时。此外,NTP Server 总也是需要网络上面较为准确的主机来自行更新自己的时间啊,所以在我们的 NTP Server 上面也要找一部最靠近自己的 Time Server 来进行自我校正。事实上,NTP 这个服务也是 Server/Client 的一种模式。

[root@linux ~]# vi /etc/ntp.conf 

Permit all access over the loopback interface.

This could be tightened as well, but to do so would effect some of the administrative functions.

restrict 127.0.0.1restrict ::1restrict 172.16.18.0 mask 255.255.255.0 default nomodify notraprestrict 192.168.168.0 mask 255.255.255.0 default nomodify notraprestrict 192.168.57.0 mask 255.255.255.0 default nomodify notrap

允许目标子网同步时间请求,具有默认,不能修改,不能陷阱 等权限

Hosts on local network are less restricted.

restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap

Use public servers from the pool.ntp.org project.

server 127.127.1.0 prefer # 设置NTP服务器使用 127.127.1.0 主板BIOS上的时钟为时间源,并且使用 prefer(优先)权限server 0.centos.pool.ntp.org iburstserver 1.cn.pool.ntp.org iburst # 使用公网上的 NTP 服务器作为时间源服务器server 192.168.168.100 iburst # 使用内网上的 NTP 服务器作为时间源服务器

Enable public key cryptography.

cryptoincludefile /etc/ntp/crypto/pw

Key file containing the keys and key identifiers used when operating with symmetric key cryptography.

keys /etc/ntp/keysdisable monitor

systemctl restart ntpd.service              # 重启 NTP 服务守护程序timedatectl set-local-rtc false

总结一下,restrict 用来设置访问权限,server 用来设置上层时间服务器,driftfile 用来设置保存漂移时间的文件。

4.4 ntpd 服务的启动与查询

在启动 NTP 服务前,先对提供服务的这台主机手动校正一次时间(因为启动服务器后,端口会被服务端占用,就不能手动同步时间了)。

[root@node1 ~]# ntpdate cn.pool.ntp.org25 Feb 21:10:52 ntpdate[9549]: adjust time server 202.112.31.197 offset 0.000101 sec

然后,启动 ntpd 服务:

systemctl start ntpd

查看端口(ntpd 服务使用 UDP 的 123 端口):

[root@node1 ~]# netstat -ln |grep :123udp 0 0 12.12.12.100:123 0.0.0.0:udp 0 0 192.168.0.100:123 0.0.0.0:udp 0 0 172.18.226.174:123 0.0.0.0:udp 0 0 10.10.10.100:123 0.0.0.0:udp 0 0 127.0.0.1:123 0.0.0.0:udp 0 0 0.0.0.0:123 0.0.0.0:udp 0 0 fe80::225:90ff:fe98:61ff:123 :::udp 0 0 fe80::225:90ff:fe98:61fe:123 :::udp 0 0 fe80::202:c903:1b:afa1:123 :::udp 0 0 ::1:123 :::udp 0 0 :::123 :::*

如何确认我们的 NTP 服务器已经更新了自己的时间呢?

[root@node1 ~]# ntpstatsynchronised to NTP server (202.120.2.101) at stratum 4time correct to within 557 mspolling server every 64 s

该指令可列出NTP服务器是否与上层联机。由上述输出结果可知,时间校正约

为557*10(-6)秒,且每隔64秒会主动更新时间。

常见的错误:

unsynchronized time server re-starting

polling server every 64 s// 或者25 Apr 15:30:17 ntpdate[11520]: no server suitable for synchronization found

其实,这不是一个错误。而是由于每次重启 NTP 服务器之后大约要 3-5 分钟客户端才能与 server 建立正常的通讯连接。当此时用客户端连接服务端就会报这样的信息。一般等待几分钟就可以了。

[root@node1 ~] # ntptrace –n127.0.0.1:stratum 11, offset 0.000000,synch distance 0.95095222.73.214.125:stratum 2,offset –0.000787,synch distance 0.10857209.81.9.7:stratum 1,offset 0.000028,synch distance 0.00436,refid 'GPS'

这个指令可以列出目前NTP服务器(第一层)与上层NTP服务器(第二层)

彼此之间的关系,注意:该命令需要安装ntp-perl包

ntpq 命令:

[root@node1 ~]# ntpq -p

指令 “ntpq -p” 可以列出目前我们的 NTP 与相关的上层 NTP 的状态,以上的几个字段的意义如下:

remote:即 NTP 主机的 IP 或主机名称。注意最左边的符号,如果由 “+” 则代表目前正在作用钟的上层 NTP,如果是 “*” 则表示也有连上线,不过是作为次要联机的 NTP 主机。

refid:参考的上一层 NTP 主机的地址

st:即 stratum 阶层

when:几秒前曾做过时间同步更新的操作

poll:下次更新在几秒之后

reach:已经向上层 NTP 服务器要求更新的次数

delay:网络传输过程钟延迟的时间

offset:时间补偿的结果

jitter:Linux 系统时间与 BIOS 硬件时间的差异时间

最后提及一点,ntp 服务默认只会同步系统时间。如果想要让 ntp 同时同步硬件时间,可以设置 /etc/sysconfig/ntpd 文件。

/etc/sysconfig/ntpd 文件中,添加 SYNC_HWCLOCK=yes 这样,就可以让硬件时间与系统时间一起同步。

5. HPC 集群中时间同步示例

5.1 集群环境简介

管理节点:192.168.0.100,192.168.0.101

计算节点:192.168.0.1~192.168.0.50

I/O 节点:192.168.0.51~192.168.0.54

Internet NTP 服务器:cn.pool.ntp.org

5.2 时间同步方案设计

Linux 系统时间同步方法小结

方案详细解释:

(1)管理节点 1 作为主 NTP 服务器,跟互联网 NTP 服务器进行时间同步;管理节点 2 作为备用 NTP 服务器,也跟互联网 NTP 服务器进行时间同步。两个管理节点做 Heartbeat,设置一个漂移 IP 地址 192.168.0.103,并对 ntpd 服务进行双机高可用;

(2)集群计算节点和 IO 节点,跟管理节点的虚拟 IP 地址 192.168.0.103 通过 ntpd 服务做时间同步;

(3)所有节点,在 ntp 时间同步的同时,设置硬件时间跟系统时间一致;

(4)所有计算节点和 IO 节点开机时,通过 ntpdate 跟 192.168.0.103 进行时间同步,然后再开启 ntpd 服务。

下一篇: 在Docker中安装使用MySQL 高可用之MGC(多主同时写入)→

以上就是Linux 系统时间同步方法小结的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/817901.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
京东快递物流实时查询 京东包裹进度查询入口
上一篇 2025年11月27日 01:51:18
R.E.P.O.一修大师修改器下载地址在哪-R.E.P.O.修改器下载地址分享
下一篇 2025年11月27日 01:51:21

相关推荐

  • 开源免费PHP工具 PHP开发效率提升利器

    推荐开源免费PHP开发工具以提升效率:VS Code、Sublime Text轻量高效,PhpStorm专业强大;调试用Xdebug、Kint、Ray;依赖管理选Composer;代码质量工具包括PHPStan、Psalm、PHP_CodeSniffer;数据库管理可用%ignore_a_1%MyA…

    2026年5月10日
    000
  • Matplotlib 地图中多类型图例的创建与优化

    Matplotlib 地图中多类型图例的创建与优化Matplotlib 地图中多类型图例的创建与优化Matplotlib 地图中多类型图例的创建与优化Matplotlib 地图中多类型图例的创建与优化

    本教程旨在解决matplotlib地图可视化中,如何在一个图例中同时展示颜色块(如区域分类)和自定义标记(如特定兴趣点)的问题。文章详细介绍了当传统`patch`对象无法正确显示标记时,如何利用`matplotlib.lines.line2d`创建标记图例句柄,并将其与颜色块图例句柄合并,从而生成一…

    2026年5月10日 用户投稿
    100
  • Golang JSON序列化:控制敏感字段暴露的最佳实践

    本教程探讨golang中如何高效控制结构体字段在json序列化时的可见性。当需要将包含敏感信息的结构体数组转换为json响应时,通过利用`encoding/json`包提供的结构体标签,特别是`json:”-“`,可以轻松实现对特定字段的忽略,从而避免敏感数据泄露,确保api…

    2026年5月10日
    000
  • 怎么在PHP代码中实现图片上传功能_PHP图片上传功能实现与安全处理教程

    首先创建含enctype的HTML表单,再用PHP接收文件,检查目录、移动临时文件,验证类型与大小,生成唯一文件名,并调整php.ini限制以确保上传成功。 如果您尝试在PHP项目中添加图片上传功能,但服务器无法正确接收或保存文件,则可能是由于表单配置、文件处理逻辑或安全限制的问题。以下是实现该功能…

    2026年5月10日
    100
  • 获取日期中的周数:CodeIgniter 教程

    本教程旨在帮助开发者在 CodeIgniter 框架中,从日期字符串中准确提取周数。我们将使用 PHP 内置的 DateTime 类,并提供详细的代码示例和注意事项,确保您能够轻松地在项目中实现此功能。 使用 DateTime 类获取周数 PHP 的 DateTime 类提供了一种便捷的方式来处理日…

    2026年5月10日
    100
  • 比特币新手教程 比特币交易平台有哪些

    比特币是一种去中心化的数字货币,基于区块链技术实现点对点交易,具有匿名性、有限发行和不可篡改等特点;新手可通过交易所购买,P2P交易获得比特币,常用平台包括Binance、OKX和Huobi;交易流程包括注册账户、实名认证、绑定支付方式、充值法币并下单购买,可选择市价单或限价单;比特币存储方式有交易…

    2026年5月10日
    000
  • c++中的SFINAE技术是什么_c++模板编程中的SFINAE原理与应用

    SFINAE 是“替换失败不是错误”的原则,指模板实例化时若参数替换导致错误,只要存在其他合法候选,编译器不报错而是继续重载决议。它用于条件启用模板、类型检测等场景,如通过 decltype 或 enable_if 控制函数重载,实现类型特征判断。尽管 C++20 引入 Concepts 简化了部分…

    2026年5月10日
    000
  • Go语言mgo查询构建:深入理解bson.M与日期范围查询的正确实践

    本文旨在解决go语言mgo库中构建复杂查询时,特别是涉及嵌套`bson.m`和日期范围筛选的常见错误。我们将深入剖析`bson.m`的类型特性,解释为何直接索引`interface{}`会导致“invalid operation”错误,并提供一种推荐的、结构清晰的代码重构方案,以确保查询条件能够正确…

    2026年5月10日
    100
  • RichHandler与Rich Progress集成:解决显示冲突的教程

    在使用rich库的`richhandler`进行日志输出并同时使用`progress`组件时,可能会遇到显示错乱或溢出问题。这通常是由于为`richhandler`和`progress`分别创建了独立的`console`实例导致的。解决方案是确保日志处理器和进度条组件共享同一个`console`实例…

    2026年5月10日
    000
  • Golang goroutine与channel调试技巧

    使用go run -race检测数据竞争,结合runtime.NumGoroutine监控协程数量,通过pprof分析阻塞调用栈,利用select超时避免永久阻塞,有效排查goroutine泄漏、死锁和数据竞争问题。 Go语言的goroutine和channel是并发编程的核心,但它们也带来了调试上…

    2026年5月10日
    000
  • 使用 Jupyter Notebook 进行探索性数据分析

    Jupyter Notebook通过单元格实现代码与Markdown结合,支持数据导入(pandas)、清洗(fillna)、探索(matplotlib/seaborn可视化)、统计分析(describe/corr)和特征工程,便于记录与分享分析过程。 Jupyter Notebook 是进行探索性…

    2026年5月10日
    000
  • 《魔兽世界》将于6月11日开启国服回归技术测试

    《魔兽世界》将于6月11日开启国服回归技术测试《魔兽世界》将于6月11日开启国服回归技术测试《魔兽世界》将于6月11日开启国服回归技术测试《魔兽世界》将于6月11日开启国服回归技术测试

    《%ign%ignore_a_1%re_a_1%》官方宣布,将于6月11日开启国服回归技术测试,时间为7天,并称可以在6月内正式开服,玩家们可以访问官网下载战网客户端并预下载“巫妖王之怒”客户端,技术测试详情见下图。 WordAi WordAI是一个AI驱动的内容重写平台 53 查看详情 以上就是《…

    2026年5月10日 用户投稿
    200
  • 如何在HTML中插入表单元素_HTML表单控件与输入类型使用指南

    HTML表单通过标签构建,包含action和method属性定义数据提交目标与方式,常用input类型如text、password、email等适配不同输入需求,配合label、required、placeholder提升可用性,结合textarea、select、button等控件实现完整交互,是…

    2026年5月10日
    100
  • 创建指定大小并填充特定数据的Golang文件教程

    本文将介绍如何使用Golang创建一个指定大小的文件,并用特定数据填充它。我们将使用 `os` 包提供的函数来创建和截断文件,从而实现快速生成大文件的目的。示例代码展示了如何创建一个10MB的文件,并将其填充为全零数据。掌握这些方法,可以方便地在例如日志系统或磁盘队列等场景中,预先创建测试文件或初始…

    2026年5月10日
    000
  • Python命令怎样使用profile分析脚本性能 Python命令性能分析的基础教程

    使用Python的cProfile模块分析脚本性能最直接的方式是通过命令行执行python -m cProfile your_script.py,它会输出每个函数的调用次数、总耗时、累积耗时等关键指标,帮助定位性能瓶颈;为进一步分析,可将结果保存为文件python -m cProfile -o ou…

    2026年5月10日
    000
  • 使用 WebCodecs VideoDecoder 实现精确逐帧回退

    本文档旨在解决在使用 WebCodecs VideoDecoder 进行视频解码时,实现精确逐帧回退的问题。通过比较帧的时间戳与目标帧的时间戳,可以避免渲染中间帧,从而提高用户体验。本文将提供详细的解决方案和示例代码,帮助开发者实现精确的视频帧控制。 在使用 WebCodecs VideoDecod…

    2026年5月10日
    000
  • 如何插入查询结果数据_SQL插入Select查询结果方法

    如何插入查询结果数据_SQL插入Select查询结果方法如何插入查询结果数据_SQL插入Select查询结果方法如何插入查询结果数据_SQL插入Select查询结果方法如何插入查询结果数据_SQL插入Select查询结果方法

    使用INSERT INTO…SELECT语句可高效插入数据,通过NOT EXISTS、LEFT JOIN、MERGE语句或唯一约束避免重复;表结构不一致时可通过别名、类型转换、默认值或计算字段处理;结合存储过程可提升可维护性,支持参数化与动态SQL。 将查询结果数据插入到另一个表中,可以…

    2026年5月10日 用户投稿
    000
  • Discord.py 交互按钮超时与持久化解决方案

    本教程旨在解决Discord.py中交互按钮在一段时间后出现“This Interaction Failed”错误的问题。我们将深入探讨视图(View)的超时机制,并提供通过正确设置timeout参数以及利用bot.add_view()方法实现按钮持久化的具体方案,确保您的机器人交互功能稳定可靠,即…

    2026年5月10日
    000
  • Debian Copilot的社区活跃度如何

    debian copilot是codeberg社区维护的ai助手,旨在为debian用户提供服务。尽管搜索结果中没有直接提供关于debian copilot社区支持活跃度的具体数据,但我们可以通过debian社区的整体活跃度和特点来推断其活跃性。 Debian社区的一般情况: Debian拥有详尽的…

    2026年5月10日
    000
  • JavaScript 动态菜单点击高亮效果实现教程

    本教程详细介绍了如何使用 JavaScript 实现动态菜单的点击高亮功能。通过事件委托和状态管理,当用户点击菜单项时,被点击项会高亮显示(绿色),同时其他菜单项恢复默认样式(白色)。这种方法避免了不必要的DOM操作,提高了性能和代码可维护性,确保了无论点击方向如何,功能都能稳定运行。 动态菜单高亮…

    2026年5月10日
    200

发表回复

登录后才能评论
关注微信