标签 时间 下的文章

在本文中, 我们会通过一些案例来演示如何使用 Linux 中的 date 命令。date 命令可以用户输出/设置系统日期和时间。 date 命令很简单, 请参见下面的例子和语法。

默认情况下,当不带任何参数运行 date 命令时,它会输出当前系统日期和时间:

$ date
Sat  2 Dec 12:34:12 CST 2017

语法

Usage: date [OPTION]... [+FORMAT]
  or:  date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]
以给定格式显示当前时间,或设置系统时间。

案例

下面这些案例会向你演示如何使用 date 命令来查看前后一段时间的日期时间。

1、 查找 5 周后的日期

date -d "5 weeks"
Sun Jan  7 19:53:50 CST 2018

2、 查找 5 周后又过 4 天的日期

date -d "5 weeks 4 days"
Thu Jan 11 19:55:35 CST 2018

3、 获取下个月的日期

date -d "next month"
Wed Jan  3 19:57:43 CST 2018

4、 获取下周日的日期

date -d last-sunday
Sun Nov 26 00:00:00 CST 2017

date 命令还有很多格式化相关的选项, 下面的例子向你演示如何格式化 date 命令的输出.

5、 以 yyyy-mm-dd 的格式显示日期

date +"%F"
2017-12-03

6、 以 mm/dd/yyyy 的格式显示日期

date +"%m/%d/%Y"
12/03/2017

7、 只显示时间

date +"%T"
20:07:04

8、 显示今天是一年中的第几天

date +"%j"
337

9、 与格式化相关的选项

格式说明
%%显示百分号 (%)。
%a星期的缩写形式 (如: Sun)。
%A星期的完整形式 (如: Sunday)。
%b缩写的月份 (如: Jan)。
%B当前区域的月份全称 (如: January)。
%c日期以及时间 (如: Thu Mar 3 23:05:25 2005)。
%C当前世纪;类似 %Y, 但是会省略最后两位 (如: 20)。
%d月中的第几日 (如: 01)。
%D日期;效果与 %m/%d/%y 一样。
%e月中的第几日, 会填充空格;与 %_d 一样。
%F完整的日期;跟 %Y-%m-%d 一样。
%g年份的后两位 (参见 %G)。
%G年份 (参见 %V);通常跟 %V 连用。
%h%b
%H小时 (00..23)。
%I小时 (01..12)。
%j一年中的第几天 (001..366)。
%k小时, 用空格填充 ( 0..23); 与 %_H 一样。
%l小时, 用空格填充 ( 1..12); 与 %_I 一样。
%m月份 (01..12)。
%M分钟 (00..59)。
%n换行。
%N纳秒 (000000000..999999999)。
%p当前区域时间是上午 AM 还是下午 PM;未知则为空。
%P类似 %p, 但是用小写字母显示。
%r当前区域的 12 小时制显示时间 (如: 11:11:04 PM)。
%R24 小时制的小时和分钟;同 %H:%M
%s从 1970-01-01 00:00:00 UTC 到现在经历的秒数。
%S秒数 (00..60)。
%t制表符。
%T时间;同 %H:%M:%S
%u星期 (1..7);1 表示 星期一
%U一年中的第几个星期,以周日为一周的开始 (00..53)。
%V一年中的第几个星期,以周一为一周的开始 (01..53)。
%w用数字表示周几 (0..6); 0 表示 周日
%W一年中的第几个星期, 周一为一周的开始 (00..53)。
%x当前区域的日期表示(如: 12/31/99)。
%X当前区域的时间表示 (如: 23:13:48)。
%y年份的后面两位 (00..99)。
%Y年。
%z+hhmm 的数字格式表示时区 (如: -0400)。
%:z+hh:mm 的数字格式表示时区 (如: -04:00)。
%::z+hh:mm:ss 的数字格式表示时区 (如: -04:00:00)。
%:::z以数字格式表示时区, 其中 : 的个数由你需要的精度来决定 (例如, -04+05:30)。
%Z时区的字符缩写(例如, EDT)。

10、 设置系统时间

你也可以使用 date 来手工设置系统时间,方法是使用 --set 选项, 下面的例子会将系统时间设置成 2017 年 8 月 30 日下午 4 点 22 分。

date --set="20170830 16:22"

当然, 如果你使用的是我们的 VPS 托管服务,你总是可以联系并咨询我们的 Linux 专家管理员(通过客服电话或者下工单的方式)关于 date 命令的任何东西。他们是 24×7 在线的,会立即向您提供帮助。(LCTT 译注:原文的广告~)

PS. 如果你喜欢这篇帖子,请点击下面的按钮分享或者留言。谢谢。


via: https://www.rosehosting.com/blog/use-the-date-command-in-linux/

作者:rosehosting 译者:lujun9972 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

在这篇短文中,我们将向你简单介绍几种 Linux 下查看系统时区的简单方法。在 Linux 机器中,尤其是生产服务器上的时间管理技能,是在系统管理中一个极其重要的方面。

Linux 包含多种可用的时间管理工具,比如 datetimedatectlcommands,你可以用它们来获取当前系统时区,也可以将系统时间与 NTP 服务器同步,来自动地、更精确地进行时间管理。

好,我们一起来看几种查看我们的 Linux 系统时区的不同方法。

1、我们从使用传统的 date 命令开始

使用下面的命令,来看一看我们的当前时区:

$ date

或者,你也可以使用下面的命令。其中 %Z 格式可以输出字符形式的时区,而 %z 输出数字形式的时区:

$ date +”%Z %z”

Find Linux Timezone

查看 Linux 时区

注意:date 的手册页中包含很多输出格式,你可以利用它们,来替换你的 date 命令的输出内容:

$ man date

2、接下来,你同样可以用 timedatectl 命令

当你不带任何参数运行它时,这条命令可以像下图一样,输出系统时间概览,其中包含当前时区:

$ timedatectl

然后,你可以在命令中提供一条管道,然后用 grep 命令 来像下面一样,只过滤出时区信息:

$ timedatectl | grep “Time zone”

Find Current Linux Timezone

查看当前 Linux 时区

同样,我们可以学习如何使用 timedatectl 来设置 Linux 时区

3、进一步,显示文件 /etc/timezone 的内容

使用 cat 工具显示文件 /etc/timezone 的内容,来查看你的时区:

$ cat /etc/timezone

Check Timezone of Linux

在 Linux 中查看时区

对于 RHEL/CentOS/Fedora 用户,这里还有一条可以起到同样效果的命令:

$ grep ZONE /etc/sysconfig/clock

就这些了!别忘了在下面的反馈栏中分享你对于这篇文章中的看法。重要的是:你应该通过这篇 Linux 时区管理指南来学习更多系统时间管理的知识,因为它含有很多易于操作的实例。


via: http://www.tecmint.com/check-linux-timezone

作者:Aaron Kili 译者:StdioA 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

我是一个 Linux 系统的新手。我该如何在我的 Ubuntu 服务器上查看一个进程(或者根据进程 id 查看)已经运行了多久?

你需要使用 ps 命令来查看关于一组正在运行的进程的信息。ps 命令提供了如下的两种格式化选项。

  1. etime 显示了自从该进程启动以来,经历过的时间,格式为 [[DD-]hh:]mm:ss
  2. etimes 显示了自该进程启动以来,经历过的时间,以秒的形式。

如何查看一个进程已经运行的时间?

你需要在 ps 命令之后添加 -o etimes 或者 -o etime 参数。它的语法如下:

ps -p {PID-HERE} -o etime
ps -p {PID-HERE} -o etimes

第一步:找到一个进程的 PID (openvpn 为例)

$ pidof openvpn
6176

第二步:openvpn 进程运行了多长时间?

$ ps -p 6176 -o etime

或者

$ ps -p 6176 -o etimes

隐藏输出头部:

$ ps -p 6176 -o etime=
$ ps -p 6176 -o etimes=

样例输出:

这个 6176 就是你想查看的进程的 PID。在这个例子中,我查看的是 openvpn 进程。你可以按照你的需求随意的更换 openvpn 进程名或者是 PID。在下面的例子中,我打印了 PID、执行命令、运行时间、用户 ID、和用户组 ID:

$ ps -p 6176 -o pid,cmd,etime,uid,gid

样例输出:

  PID CMD                             ELAPSED   UID   GID
 6176 /usr/sbin/openvpn --daemon        15:25 65534 65534

via: http://www.cyberciti.biz/faq/how-to-check-how-long-a-process-has-been-running/

作者:VIVEK GITE 译者:MikeCoder 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

时间日期格式

尽管设置页面里已经有一些选项可以用了,这个快速教程会向你展示如何更加深入地自定义 Ubuntu 面板上的时间和日期指示器。

自定义世间日期

在开始之前,在 Ubuntu 软件中心搜索并安装 dconf Editor。然后启动该软件并按以下步骤执行:

1、 当 dconf Editor 启动后,导航至 com -> canonical -> indicator -> datetime。将 time-format 的值设置为 custom

自定义时间格式

你也可以通过终端里的命令完成以上操作:

gsettings set com.canonical.indicator.datetime time-format 'custom'

2、 现在你可以通过编辑 custom-time-format 的值来自定义时间和日期的格式。

自定义-时间格式

你也可以通过命令完成:(LCTT 译注:将 FORMATVALUEHERE 替换为所需要的格式值)

gsettings set com.canonical.indicator.datetime custom-time-format 'FORMAT_VALUE_HERE'

以下是参数含义:

  • %a = 星期名缩写
  • %A = 星期名完整拼写
  • %b = 月份名缩写
  • %B = 月份名完整拼写
  • %d = 每月的日期
  • %l = 小时 ( 1..12), %I = 小时 (01..12)
  • %k = 小时 ( 1..23), %H = 小时 (01..23)
  • %M = 分钟 (00..59)
  • %p = 午别,AM 或 PM, %P = am 或 pm.
  • %S = 秒 (00..59)

可以打开终端键入命令 man date 并执行以了解更多细节。

一些自定义时间日期显示格式值的例子:

%a %H:%M %m/%d/%Y

%a %r %b %d or %a %I:%M:%S %p %b %d

%a %-d %b %l:%M %P %z


via: http://ubuntuhandbook.org/index.php/2015/12/time-date-format-ubuntu-panel/

作者:Ji m 译者:alim0x 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

网络时间协议(NTP)用来同步网络上不同主机的系统时间。你管理的所有主机都可以和一个指定的被称为 NTP 服务器的时间服务器同步它们的时间。而另一方面,一个 NTP 服务器会将它的时间和任意公共 NTP 服务器,或者你选定的服务器同步。由 NTP 管理的所有系统时钟都会同步精确到毫秒级。

在公司环境中,如果他们不想为 NTP 传输打开防火墙,就有必要设置一个内部 NTP 服务器,然后让员工使用内部服务器而不是公共 NTP 服务器。在这个指南中,我们会介绍如何将一个 CentOS 系统配置为 NTP 服务器。在介绍详细内容之前,让我们先来简单了解一下 NTP 的概念。

为什么我们需要 NTP?

由于制造工艺多种多样,所有的(非原子)时钟并不按照完全一致的速度行走。有一些时钟走的比较快而有一些走的比较慢。因此经过很长一段时间以后,一个时钟的时间慢慢的和其它的发生偏移,这就是常说的 “时钟漂移” 或 “时间漂移”。为了将时钟漂移的影响最小化,使用 NTP 的主机应该周期性地和指定的 NTP 服务器交互以保持它们的时钟同步。

在不同的主机之间进行时间同步对于计划备份、入侵检测记录、分布式任务调度或者事务订单管理来说是很重要的事情。它甚至应该作为日常任务的一部分。

NTP 的层次结构

NTP 时钟以层次模型组织。层级中的每层被称为一个 stratum(阶层)。stratum 的概念说明了一台机器到授权的时间源有多少 NTP 跳。

Stratum 0 由没有时间漂移的时钟组成,例如原子时钟。这种时钟不能在网络上直接使用。Stratum N (N > 1) 层服务器从 Stratum N-1 层服务器同步时间。Stratum N 时钟能通过网络和彼此互联。

NTP 支持多达 15 个 stratum 的层级。Stratum 16 被认为是未同步的,不能使用的。

准备 CentOS 服务器

现在让我们来开始在 CentOS 上设置 NTP 服务器。

首先,我们需要保证正确设置了服务器的时区。在 CentOS 7 中,我们可以使用 timedatectl 命令查看和更改服务器的时区(比如,"Australia/Adelaide",LCTT 译注:中国可设置为 Asia/Shanghai )

# timedatectl list-timezones | grep Australia
# timedatectl set-timezone Australia/Adelaide
# timedatectl

继续并使用 yum 安装需要的软件

# yum install ntp

然后我们会添加全球 NTP 服务器用于同步时间。

# vim /etc/ntp.conf

server 0.oceania.pool.ntp.org
server 1.oceania.pool.ntp.org
server 2.oceania.pool.ntp.org
server 3.oceania.pool.ntp.org

默认情况下,NTP 服务器的日志保存在 /var/log/messages。如果你希望使用自定义的日志文件,那也可以指定。

logfile /var/log/ntpd.log

如果你选择自定义日志文件,确保更改了它的属主和 SELinux 环境。

# chown ntp:ntp /var/log/ntpd.log
# chcon -t ntpd_log_t /var/log/ntpd.log

现在初始化 NTP 服务并确保把它添加到了开机启动。

# systemctl restart ntp
# systemctl enable ntp

验证 NTP Server 时钟

我们可以使用 ntpq 命令来检查本地服务器的时钟如何通过 NTP 同步。

下面的表格解释了输出列。

remote源在 ntp.conf 中定义。‘*’ 表示当前使用的,也是最好的源;‘+’ 表示这些源可作为 NTP 源;‘-’ 标记的源是不可用的。
refid用于和本地时钟同步的远程服务器的 IP 地址。
stStratum(阶层)
t类型。 'u' 表示单播(unicast)。其它值包括本地(local)、多播(multicast)、广播(broadcast)。
when自从上次和服务器交互后经过的时间(以秒数计)。
poll和服务器的轮询间隔,以秒数计。
reach表示和服务器交互是否有任何错误的八进制数。值 337 表示 100% 成功(即十进制的255)。
delay服务器和远程服务器来回的时间。
offset我们服务器和远程服务器的时间差异,以毫秒数计。
jitter两次取样之间平均时差,以毫秒数计。

控制到 NTP 服务器的访问

默认情况下,NTP 服务器允许来自所有主机的查询。如果你想过滤进来的 NTP 同步连接,你可以在你的防火墙中添加规则过滤流量。

# iptables -A INPUT -s 192.168.1.0/24 -p udp --dport 123 -j ACCEPT
# iptables -A INPUT -p udp --dport 123 -j DROP

该规则允许从 192.168.1.0/24 来的 NTP 流量(端口 UDP/123),任何其它网络的流量会被丢弃。你可以根据需要更改规则。

配置 NTP 客户端

1. Linux

NTP 客户端主机需要 ntpupdate 软件包来和服务器同步时间。可以轻松地使用 yum 或 apt-get 安装这个软件包。安装完软件包之后,用服务器的 IP 地址运行下面的命令。

# ntpdate <server-IP-address>

基于 RHEL 和 Debian 的系统命令都相同。

2. Windows

如果你正在使用 Windows,在日期和时间设置(Date and Time settings)下查找网络时间(Internet Time)。

3. Cisco 设备

如果你想要同步 Cisco 设备的时间,你可以在全局配置模式下使用下面的命令。

# ntp server <server-IP-address>

来自其它厂家的支持 NTP 的设备有自己的用于网络时间的参数。如果你想将设备和 NTP服务器同步时间,请查看设备的说明文档。

结论

总而言之,NTP 是在你的所有主机上同步时钟的一个协议。我们已经介绍了如何设置 NTP 服务器并使支持 NTP 的设备和服务器同步时间。

希望能对你有所帮助。


via: http://xmodulo.com/setup-ntp-server-centos.html

作者:Sarmed Rahman 译者:ictlyh 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

timedatectl是用来查询和修改系统时间和配置的Linux应用程序。它是systemd 系统服务管理的一部分,并且允许你检查和修改系统时钟的配置。

在这篇文章中,我们将涉及该小巧但十分重要应用程序的所有方面。

系统当前的时间状态

想要查看系统当前日期/时间,以及可使用不带任何参数的命令查看当前系统时间配置,可以这样:

# timedatectl

输入的结果就像这样:

修改日期

想要修改系统日期,你可以简单地使用timedatectl设置时间命令,紧随命令的是YYYY-MM-DD格式的日期,YYYY代表年,MM代表2位数字的月份,DD代表2位数字的天。举个例子,如果你想把日期改为2015年2月4号,你应该使用下面的命令:

# timedatectl 2015-02-04

修改时间

想要修改时间,你可以以相同的方式使用该工具,但是使用的格式为HH:MM:SS,HH代表24小时制的时钟,MM代表分钟,SS代表秒钟。想将当前时间设为22:04:43,使用下面的命令:

# timedatectl 22:04:43

修改时区

设置正确的时区是保持时间同步的关键,特别是在你使用NTP协议同步的时候。首先,你应该使用list-timezones选项列出你所在区域的可用时区,你也可以使用grep和more来让格式方便阅读:

# timedatectl list-timezones | grep America | more

这将显示一个简单的滚动列表格式。

之后,你就会知道你想设置的时区是如何命名的,然后使用下面的命令修改它:

# timedatectl set-timezone America/Los_Angeles

设置本地时钟

实时时钟(RTC),通常被称为硬件时钟,完全独立于操作系统当前状态,甚至可以在计算机关闭的时候工作。你可以配置系统使用国际时间(UTC)或当地时间来校正RTC。注意,使用当地时区校正RTC并没有完美支持,而且还有可能因为时区变化和夏令时调整引起许多问题。如果有可能,在UTC模式下校正RTC。这一做法的唯一问题是,其他操作系统可能不完全支持它(如果你在同一台机器上运行2个操作系统的话)。

使用UTC模式校正RTC,使用下面的命令:

# timedatectl set-local-rtc 0

使用当地时间校正,使用:

# timedatectl set-local-rtc 1

设置NTP同步

网络时间协议(NTP)是在分组交换、可变数据延迟的计算机系统间进行时钟同步的网络协议。NTP被设计使用几毫秒的协调通用时间(UTC)来同步所有参与的计算机。如果你希望设置NTP同步,你可以使用set-ntp选项设置。使用“no”关闭NTP同步,使用“yes”开启。

# timedatectl set-ntp yes

via: http://linoxide.com/linux-command/timedatectl-change-time-date-systemd/

作者:Adrian Dinu 译者:su-kaiyao 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出