日常异常(10)

本贴最后更新于 2268 天前,其中的信息可能已经斗转星移

tomcat+ubuntu 时差问题

前言:虚拟机上玩的 ubuntu,配了 java 环境,装了 ftp、ssh、tomcat、nginx;部署了项目,启动 tomcat,发现 tomcat 打的日志时间和 windows 时间不对。还有 ubuntu 的时间也不对。

先把 ubuntu 的时间修改,然后修改 tomcat 的时间差;


以下方法适用于所有 Linux 发行版。首先打开一个终端窗口,输入下面的命令。

sudo ln -sf /usr/share/zoneinfo

先不要按 Enter 键,我们需要按一下 Tab 键。终端会列出许多地理位置。

sudo ln -sf /usr/share/zoneinfo/{your-geographic-area}/{your-city} /etc/localtime

现在按 Enter 键运行这个命令。它会创建一个软链接,将/etc/localtime 文件指向对应的时区文件。你的系统时间会立即发生改变,可以用 date 命令查看。但有一些桌面环境,如 XFCE,任务栏的时间不会改变,用户需要重新登录才能看到变化。


在低版本的 ubuntu 里面以下命令失效

Real Time Clock

RTC 的全称是 Real Time Clock,也叫做硬件时钟(hardware clock). RTC 时间是由主板的 CMOS 电池驱动的。即使你关闭电脑,RTC 时钟也会一直运转,除非 CMOS 电池没电了。很多情况下,RTC 时间并不准确。

要查看你的 RTC 时间,输入以下命令

timedatectl

输出结果

Local time: Wed 2016-03-02 17:47:19 CST
Universal time: Wed 2016-03-02 09:47:19 UTC
RTC time: Wed 2016-03-02 09:47:19
Time zone: Asia/Shanghai (CST, +0800)
Network time on: yes
NTP synchronized: yes
RTC in local TZ: no

你可以看见,我的本地时间是**17:49:19, **但 RTC 时间是 09:47:19。RTC 时间与本地时间不相同。有时候这会给系统的程序带来问题。RTC 时间是不可靠的。

RTC 时间默认没有时区。要让系统以 UTC 时区读取 RTC 时间,执行下面的命令

timedatectl set-local-rtc 0

要让系统以本地时区读取 RTC 时间,运行这个命令。

timedatectl set-local-rtc 1

推荐以 UTC 时区读取 RTC 时间,这可以减少麻烦。


让系统时间与本地时区时间自动同步

有时候,即使你正确设置好了时区,你的系统时间仍然有可能不准确。我们可以使用 NTP 协议来让系统时间与本地时区时间自动同步。

许多程序需要准确的时间才能发挥应有的功能。而 NTP 可以为网络上的机器提供精确的时间。NTP 是一个应用层协议,使用 UDP 作为传输层协议。NTP 时间服务器从原子钟(atomic clock)获取精确的时间。

使用 Systemd 的 Linux 系统可以用以下命令启用 NTP 网络时间自动同步。

timedatectl set-ntp true

这条命令会启动 systemd-timesyncd 服务。查看 NTP 状态 。

timedatectl status

输出结果:

Local time: Wed 2016-03-02 18:30:35 CST
Universal time: Wed 2016-03-02 10:30:35 UTC
RTC time: Wed 2016-03-02 10:30:35
Time zone: Asia/Shanghai (CST, +0800)
Network time on: yes
NTP synchronized: yes
RTC in local TZ: no

**网络时间(network time)**为 Yes 就表示启用了 NTP 时间同步,**NTP 同步(NTP synchronized)**有两个状态:Yes 或 No。如果 Network time 没有启用,那么 NTP 同步的状态一定为 No。现在可以查看 systemd-timesyncd 的状态。

sudo systemctl status systemd-timesyncd

输出结果:

● systemd-timesyncd.service - Network Time Synchronization
Loaded: loaded (/usr/lib/systemd/system/systemd-timesyncd.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2016-03-02 18:30:29 CST; 1h 37min ago
Docs: man:systemd-timesyncd.service(8)
Main PID: 2243 (systemd-timesyn)
Status: "Synchronized to time server 202.112.29.82:123 (0.arch.pool.ntp.org)."
Tasks: 2 (limit: 512)
CGroup: /system.slice/systemd-timesyncd.service
└─2243 /usr/lib/systemd/systemd-timesyncd

可以发现,系统与 202.112.29.82 这台时间服务器同步成功了


修改到这里机器的时间正常了,但是 tomcat 的时间依旧不正常,继续。

tomcat 的时间修改:

1.通过启动参数,通过 ide 修改启动参数就不说了,在服务器上是没有 ide 的,修改 tomcat 的启动文件 catalina.bat/sh

${catalina_home}/bin/catalina.sh 文件中的 JAVA_OPTS 启动参数中做了以下调整:

JAVA_OPTS=" -Duser.timezone=GMT+08"

即增加了时区选项-Duser.timezone=GMT+08,重新启动 Tomcat,log 日志的时间正确了。

为什么时间需要同步,时间不一致会导致很奇怪的问题,奇怪到你解决不了。

参考资料:https://www.linuxdashen.com/linux%E7%B3%BB%E7%BB%9F%E7%94%A8%E5%91%BD%E4%BB%A4%E9%85%8D%E7%BD%AE%E6%97%B6%E5%8C%BA%E5%B9%B6%E5%90%8C%E6%AD%A5%E7%B3%BB%E7%BB%9F%E6%97%B6%E9%97%B4

Tomcat7.x时区问题导致时间获取不正确 - 千山独行 - ITeye博客

  • 后端
    45 引用 • 126 回帖 • 1 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...

推荐标签 标签

  • 创业

    你比 99% 的人都优秀么?

    82 引用 • 1398 回帖
  • GitBook

    GitBook 使您的团队可以轻松编写和维护高质量的文档。 分享知识,提高团队的工作效率,让用户满意。

    3 引用 • 8 回帖
  • 负能量

    上帝为你关上了一扇门,然后就去睡觉了....努力不一定能成功,但不努力一定很轻松 (° ー °〃)

    85 引用 • 1201 回帖 • 449 关注
  • Webswing

    Webswing 是一个能将任何 Swing 应用通过纯 HTML5 运行在浏览器中的 Web 服务器,详细介绍请看 将 Java Swing 应用变成 Web 应用

    1 引用 • 15 回帖 • 636 关注
  • Markdown

    Markdown 是一种轻量级标记语言,用户可使用纯文本编辑器来排版文档,最终通过 Markdown 引擎将文档转换为所需格式(比如 HTML、PDF 等)。

    163 引用 • 1450 回帖
  • 微信

    腾讯公司 2011 年 1 月 21 日推出的一款手机通讯软件。用户可以通过摇一摇、搜索号码、扫描二维码等添加好友和关注公众平台,同时可以将自己看到的精彩内容分享到微信朋友圈。

    129 引用 • 793 回帖
  • Latke

    Latke 是一款以 JSON 为主的 Java Web 框架。

    70 引用 • 532 回帖 • 712 关注
  • jsoup

    jsoup 是一款 Java 的 HTML 解析器,可直接解析某个 URL 地址、HTML 文本内容。它提供了一套非常省力的 API,可通过 DOM,CSS 以及类似于 jQuery 的操作方法来取出和操作数据。

    6 引用 • 1 回帖 • 462 关注
  • 黑曜石

    黑曜石是一款强大的知识库工具,支持本地 Markdown 文件编辑,支持双向链接和关系图。

    A second brain, for you, forever.

    10 引用 • 85 回帖
  • SMTP

    SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。SMTP 协议属于 TCP/IP 协议簇,它帮助每台计算机在发送或中转信件时找到下一个目的地。

    4 引用 • 18 回帖 • 588 关注
  • 酷鸟浏览器

    安全 · 稳定 · 快速
    为跨境从业人员提供专业的跨境浏览器

    3 引用 • 59 回帖 • 25 关注
  • Netty

    Netty 是一个基于 NIO 的客户端-服务器编程框架,使用 Netty 可以让你快速、简单地开发出一个可维护、高性能的网络应用,例如实现了某种协议的客户、服务端应用。

    49 引用 • 33 回帖 • 21 关注
  • 周末

    星期六到星期天晚,实行五天工作制后,指每周的最后两天。再过几年可能就是三天了。

    14 引用 • 297 回帖
  • 大数据

    大数据(big data)是指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。

    89 引用 • 113 回帖
  • Ngui

    Ngui 是一个 GUI 的排版显示引擎和跨平台的 GUI 应用程序开发框架,基于
    Node.js / OpenGL。目标是在此基础上开发 GUI 应用程序可拥有开发 WEB 应用般简单与速度同时兼顾 Native 应用程序的性能与体验。

    7 引用 • 9 回帖 • 345 关注
  • 支付宝

    支付宝是全球领先的独立第三方支付平台,致力于为广大用户提供安全快速的电子支付/网上支付/安全支付/手机支付体验,及转账收款/水电煤缴费/信用卡还款/AA 收款等生活服务应用。

    29 引用 • 347 回帖
  • LaTeX

    LaTeX(音译“拉泰赫”)是一种基于 ΤΕΧ 的排版系统,由美国计算机学家莱斯利·兰伯特(Leslie Lamport)在 20 世纪 80 年代初期开发,利用这种格式,即使使用者没有排版和程序设计的知识也可以充分发挥由 TeX 所提供的强大功能,能在几天,甚至几小时内生成很多具有书籍质量的印刷品。对于生成复杂表格和数学公式,这一点表现得尤为突出。因此它非常适用于生成高印刷质量的科技和数学类文档。

    9 引用 • 32 回帖 • 166 关注
  • 旅游

    希望你我能在旅途中找到人生的下一站。

    85 引用 • 895 回帖 • 1 关注
  • JetBrains

    JetBrains 是一家捷克的软件开发公司,该公司位于捷克的布拉格,并在俄国的圣彼得堡及美国麻州波士顿都设有办公室,该公司最为人所熟知的产品是 Java 编程语言开发撰写时所用的集成开发环境:IntelliJ IDEA

    18 引用 • 54 回帖 • 1 关注
  • Q&A

    提问之前请先看《提问的智慧》,好的问题比好的答案更有价值。

    6551 引用 • 29424 回帖 • 245 关注
  • 宕机

    宕机,多指一些网站、游戏、网络应用等服务器一种区别于正常运行的状态,也叫“Down 机”、“当机”或“死机”。宕机状态不仅仅是指服务器“挂掉了”、“死机了”状态,也包括服务器假死、停用、关闭等一些原因而导致出现的不能够正常运行的状态。

    13 引用 • 82 回帖 • 38 关注
  • OkHttp

    OkHttp 是一款 HTTP & HTTP/2 客户端库,专为 Android 和 Java 应用打造。

    16 引用 • 6 回帖 • 53 关注
  • Sym

    Sym 是一款用 Java 实现的现代化社区(论坛/BBS/社交网络/博客)系统平台。

    下一代的社区系统,为未来而构建

    523 引用 • 4581 回帖 • 690 关注
  • SpaceVim

    SpaceVim 是一个社区驱动的模块化 vim/neovim 配置集合,以模块的方式组织管理插件以
    及相关配置,为不同的语言开发量身定制了相关的开发模块,该模块提供代码自动补全,
    语法检查、格式化、调试、REPL 等特性。用户仅需载入相关语言的模块即可得到一个开箱
    即用的 Vim-IDE。

    3 引用 • 31 回帖 • 71 关注
  • 单点登录

    单点登录(Single Sign On)是目前比较流行的企业业务整合的解决方案之一。SSO 的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。

    9 引用 • 25 回帖 • 3 关注
  • SQLite

    SQLite 是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。SQLite 是全世界使用最为广泛的数据库引擎。

    4 引用 • 7 回帖 • 4 关注
  • Maven

    Maven 是基于项目对象模型(POM)、通过一小段描述信息来管理项目的构建、报告和文档的软件项目管理工具。

    185 引用 • 318 回帖 • 346 关注