日常异常(10)

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

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博客

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

相关帖子

欢迎来到这里!

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

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

推荐标签 标签

  • Gzip

    gzip (GNU zip)是 GNU 自由软件的文件压缩程序。我们在 Linux 中经常会用到后缀为 .gz 的文件,它们就是 Gzip 格式的。现今已经成为互联网上使用非常普遍的一种数据压缩格式,或者说一种文件格式。

    9 引用 • 12 回帖 • 179 关注
  • 旅游

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

    98 引用 • 903 回帖
  • IBM

    IBM(国际商业机器公司)或万国商业机器公司,简称 IBM(International Business Machines Corporation),总公司在纽约州阿蒙克市。1911 年托马斯·沃森创立于美国,是全球最大的信息技术和业务解决方案公司,拥有全球雇员 30 多万人,业务遍及 160 多个国家和地区。

    17 引用 • 53 回帖 • 142 关注
  • App

    App(应用程序,Application 的缩写)一般指手机软件。

    91 引用 • 384 回帖
  • ngrok

    ngrok 是一个反向代理,通过在公共的端点和本地运行的 Web 服务器之间建立一个安全的通道。

    7 引用 • 63 回帖 • 656 关注
  • Mobi.css

    Mobi.css is a lightweight, flexible CSS framework that focus on mobile.

    1 引用 • 6 回帖 • 765 关注
  • Outlook
    1 引用 • 5 回帖 • 2 关注
  • VirtualBox

    VirtualBox 是一款开源虚拟机软件,最早由德国 Innotek 公司开发,由 Sun Microsystems 公司出品的软件,使用 Qt 编写,在 Sun 被 Oracle 收购后正式更名成 Oracle VM VirtualBox。

    10 引用 • 2 回帖 • 18 关注
  • Angular

    AngularAngularJS 的新版本。

    26 引用 • 66 回帖 • 562 关注
  • PostgreSQL

    PostgreSQL 是一款功能强大的企业级数据库系统,在 BSD 开源许可证下发布。

    22 引用 • 22 回帖 • 1 关注
  • HTML

    HTML5 是 HTML 下一个的主要修订版本,现在仍处于发展阶段。广义论及 HTML5 时,实际指的是包括 HTML、CSS 和 JavaScript 在内的一套技术组合。

    108 引用 • 295 回帖 • 2 关注
  • GraphQL

    GraphQL 是一个用于 API 的查询语言,是一个使用基于类型系统来执行查询的服务端运行时(类型系统由你的数据定义)。GraphQL 并没有和任何特定数据库或者存储引擎绑定,而是依靠你现有的代码和数据支撑。

    4 引用 • 3 回帖 • 11 关注
  • 人工智能

    人工智能(Artificial Intelligence)是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门技术科学。

    115 引用 • 318 回帖 • 1 关注
  • Webswing

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

    1 引用 • 15 回帖 • 644 关注
  • 百度

    百度(Nasdaq:BIDU)是全球最大的中文搜索引擎、最大的中文网站。2000 年 1 月由李彦宏创立于北京中关村,致力于向人们提供“简单,可依赖”的信息获取方式。“百度”二字源于中国宋朝词人辛弃疾的《青玉案·元夕》词句“众里寻他千百度”,象征着百度对中文信息检索技术的执著追求。

    63 引用 • 785 回帖 • 70 关注
  • Android

    Android 是一种以 Linux 为基础的开放源码操作系统,主要使用于便携设备。2005 年由 Google 收购注资,并拉拢多家制造商组成开放手机联盟开发改良,逐渐扩展到到平板电脑及其他领域上。

    336 引用 • 324 回帖
  • MongoDB

    MongoDB(来自于英文单词“Humongous”,中文含义为“庞大”)是一个基于分布式文件存储的数据库,由 C++ 语言编写。旨在为应用提供可扩展的高性能数据存储解决方案。MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似 JSON 的 BSON 格式,因此可以存储比较复杂的数据类型。

    91 引用 • 59 回帖 • 5 关注
  • 职场

    找到自己的位置,萌新烦恼少。

    127 引用 • 1708 回帖 • 3 关注
  • jsDelivr

    jsDelivr 是一个开源的 CDN 服务,可为 npm 包、GitHub 仓库提供免费、快速并且可靠的全球 CDN 加速服务。

    5 引用 • 31 回帖 • 108 关注
  • Hexo

    Hexo 是一款快速、简洁且高效的博客框架,使用 Node.js 编写。

    22 引用 • 148 回帖 • 8 关注
  • 房星科技

    房星网,我们不和没有钱的程序员谈理想,我们要让程序员又有理想又有钱。我们有雄厚的房地产行业线下资源,遍布昆明全城的 100 家门店、四千地产经纪人是我们坚实的后盾。

    6 引用 • 141 回帖 • 606 关注
  • Thymeleaf

    Thymeleaf 是一款用于渲染 XML/XHTML/HTML5 内容的模板引擎。类似 Velocity、 FreeMarker 等,它也可以轻易的与 Spring 等 Web 框架进行集成作为 Web 应用的模板引擎。与其它模板引擎相比,Thymeleaf 最大的特点是能够直接在浏览器中打开并正确显示模板页面,而不需要启动整个 Web 应用。

    11 引用 • 19 回帖 • 394 关注
  • Kafka

    Kafka 是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据。 这种动作(网页浏览,搜索和其他用户的行动)是现代系统中许多功能的基础。 这些数据通常是由于吞吐量的要求而通过处理日志和日志聚合来解决。

    36 引用 • 35 回帖 • 3 关注
  • CloudFoundry

    Cloud Foundry 是 VMware 推出的业界第一个开源 PaaS 云平台,它支持多种框架、语言、运行时环境、云平台及应用服务,使开发人员能够在几秒钟内进行应用程序的部署和扩展,无需担心任何基础架构的问题。

    5 引用 • 18 回帖 • 190 关注
  • 博客

    记录并分享人生的经历。

    273 引用 • 2389 回帖 • 2 关注
  • Typecho

    Typecho 是一款博客程序,它在 GPLv2 许可证下发行,基于 PHP 构建,可以运行在各种平台上,支持多种数据库(MySQL、PostgreSQL、SQLite)。

    12 引用 • 67 回帖 • 443 关注
  • FlowUs

    FlowUs.息流 个人及团队的新一代生产力工具。

    让复杂的信息管理更轻松、自由、充满创意。

    1 引用 • 5 关注