linux修改系统时间和linux查看时区、修改时区的方法

一、查看和修改Linux的时区

1. 查看当前时区
命令 : "date -R"

2. 修改设置Linux服务器时区
方法 A
命令 : "tzselect"

方法 B 仅限于RedHat Linux 和 CentOS
命令 : "timeconfig"

方法 C 适用于Debian
命令 : "dpkg-reconfigure tzdata"

3. 复制相应的时区文件,替换系统时区文件;或者创建链接文件
cp /usr/share/zoneinfo/主时区/主时区/次时区 /etc/localtime

例如:在设置中国时区使用亚洲/上海(+8)

cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

二、查看和修改Linux的时间

1. 查看时间和日期
命令 : "date"

2.设置时间和日期
例如:将系统日期设定成2009年11月3日的命令

命令 : "date -s 11/03/2009"

将系统时间设定成下午5点55分55秒的命令

命令 : "date -s 17:55:55"

3. 将当前时间和日期写入BIOS,避免重启后失效
命令 : "hwclock -w"

注:

date
不加参数可以直接看到当前日期时间

cal
不加参数可以直接看到本月月历

三、date命令的功能是显示和设置系统日期和时间。 
  该命令的一般格式为: date [选项] 显示时间格式(以+开头,后面接格式) 
  date 设置时间格式 
  命令中各选项的含义分别为: 
  -d datestr, --date datestr 显示由datestr描述的日期 
  -s datestr, --set datestr 设置datestr 描述的日期 
  -u, --universal 显示或设置通用时间 时间域 
  % H 小时(00..23) 
  % I 小时(01..12) 
  % k 小时(0..23) 
  % l 小时(1..12) 
  % M 分(00..59) 
  % p 显示出AM或PM 
  % r 时间(hh:mm:ss AM或PM),12小时 
  % s 从1970年1月1日00:00:00到目前经历的秒数 
  % S 秒(00..59) 
  % T 时间(24小时制)(hh:mm:ss) 
  % X 显示时间的格式(%H:%M:%S) 
  % Z 时区 日期域 
  % a 星期几的简称( Sun..Sat) 
  % A 星期几的全称( Sunday..Saturday) 
  % b 月的简称(Jan..Dec) 
  % B 月的全称(January..December) 
  % c 日期和时间( Mon Nov 8 14:12:46 CST 1999) 
  % d 一个月的第几天(01..31) 
  % D 日期(mm/dd/yy) 
  % h 和%b选项相同 
  % j 一年的第几天(001..366) 
  % m 月(01..12) 
  % w 一个星期的第几天(0代表星期天) 
  % W 一年的第几个星期(00..53,星期一为第一天) 
  % x 显示日期的格式(mm/dd/yy) 
  % y 年的最后两个数字( 1999则是99) 
  % Y 年(例如:1970,1996等) 
  需要特别说明的是,只有超级用户才能用date命令设置时间,一般用户只能用date命令显示时间。

下列环境变量将会影响到 date 命令的执行效果。 资料整理 www.linuxso.com
LANG 确定在 LC_ALL 和相应的环境变量(以 LC_ 开头)都不指定语言环境的时候将要使用的缺省语言环境。
LC_ALL 确定用于覆盖由 LANG 或任何以 LC_ 开头的环境变量设置的任何语言环境类别值的语言环境。
LC_CTYPE 确定文本数据的字节序列解释为字符时使用的语言环境(例如参数中单对多字节字符)。
LC_MESSAGES 决定写信息应使用的语言。
LC_TIME 确定由 date 写入的日期和时间字符串的内容。
NLSPATH 为处理 LC_MESSAGES 决定消息目录的位置。
TZ 指定时间和日期使用的时区,除非指定了 -u 选项。如果未设置 TZ 变量且未指定 -u 标志,则使用非指定的系统缺省时区。
例子:

#date //显示当前日期

#date -s //设置当前时间,只有root权限才能设置,其他只能查看。

#date -s 20061010 //设置成20061010,这样会把具体时间设置成空00:00:00

#date -s 12:23:23 //设置具体时间,不会对日期做更改

#date -s “12:12:23 2006-10-10″ //这样可以设置全部时间

CST:中国标准时间(China Standard Time),这个解释可能是针对RedHat Linux。

UTC:协调世界时,又称世界标准时间,简称UTC,从英文国际时间/法文协调时间”Universal Time/Temps Cordonné”而来。中国大陆、香港、澳门、台湾、蒙古国、新加坡、马来西亚、菲律宾、澳洲西部的时间与UTC的时差均为+8,也就是UTC+8。

GMT:格林尼治标准时间(旧译格林威治平均时间或格林威治标准时间;英语:Greenwich Mean Time,GMT)是指位于英国伦敦郊区的皇家格林尼治天文台的标准时间,因为本初子午线被定义在通过那里的经线。

设置完系统时间后,还需要同步到硬件时钟上
# clock --systohc

上面命令中,--hctosys表示Hardware Clock to SYStem clock。

Linux系统有系统时间和硬件时间之分:

系统时间: 一般说来就是我们执行 date命令看到的时间,linux系统下所有的时间调用(除了直接访问硬件时间的命令)都是使用的这个时间。

硬件时间:主板上BIOS中的时间,由主板电池供电来维持运行,系统开机时要读取这个时间,并根据它来设定系统时间(注意:系统启动时根据硬件时间设定系统时间的过程可能存在时区换算,这要视具体的系统及相关设置而定)。

1、查看当前系统时间date:

[root@surfer ~]#date

2018年06月 26日星期二 10:09:21 CST

2、设置系统时间date -s +时间

[root@surfer ~]#date -s 10:10:10

2018年06月 26日星期二 10:10:10 CST

3、设置系统时间时,如果还需要设置日期,则要将日期与时间值用双引号包裹起来

[root@surfer ~]#date -s "2018/8/8 10:00:00"

2018年08月 08日星期三 10:00:00 CST

4、查看硬件时间用hwclock或者clock命令:

[root@surfer ~]#hwclock

2018年06月26日 星期二 10时13分02秒  -0.805503 秒

[root@surfer ~]#clock

2018年06月26日 星期二 10时13分07秒  -0.507462 秒

5、将硬件时间写入到系统时间:

[root@surfer ~]#hwclock -s

6、将系统时间写入到硬件时间

[root@surfer ~]#hwclock -w

7、时间同步,Linux系统需安装ntpdate

检查是否安装了ntpdate : rpm -qa | grep ntpdate

如果没有安装则运行如下命令:yum install ntpdate

时间同步命令:ntpdate  www.pool.net.org   ,其中 www.pool.net.org 是互联网中标准时间服务器

8、contab命令

通过vi /etc/crontab命令可以看到定时任务的书写格式

[root@surfer ~]# vi/etc/crontab

SHELL=/bin/bash      #SHELL变量指定了系统要使用哪个shell

PATH=/sbin:/bin:/usr/sbin:/usr/bin    #PATH变量指定了系统执行命令的路径

MAILTO=root    #MAILTO变量指定了crond的任务执行信息将通过电子邮件发送给root用户,如果MAILTO变     量的值为空,则表示不发送任务执行信息给用户

# For details seeman 4 crontabs

# Example of jobdefinition:

# .---------------- minute (0 - 59)   #分钟

# |  .------------- hour (0 -23)   #小时

# |  |  .---------- day of month (1 - 31)  #日期

# |  |  | .------- month (1 - 12) OR jan,feb,mar,apr … #月份

# |  |  | |  .---- day of week (0 - 6)(Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat  #周

# |  | |  |  |

# *  * *  *  * user-name command to be executed

在以上各个字段中,还可以使用以下特殊字符:

星号(*):代表所有可能的值,例如month字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。

逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9”

横杠(-):可以用整数之间的横杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”

斜线(/):可以用斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。同时斜线可以和星号一起使用,例如*/10,如果用在minute字段,表示每十分钟执行一次。

crontab -l  :列出当前用户的crontab文件内容

* * * * */usr/local/gse/agent/bin/gsectl watch

crontab -e  :编辑当前用户的crontab文件内容

[root@surfer data]#crontab -e

*/1 * * * * echo"hello world">>/data/code.txt

~在这里我添加了一个定时任务*/1 * * * * echo"hello world">>/data/code.txt  :意思是每一分钟打印一次hello world,并且重定向到了/data/code.txt文件里面,几分钟过后查看code.txt,出现了如下内容,说明这个定时任务已经开始执行

 

Linux用root强制踢掉已登录用户

首先使用w命令查看所有在线用户:

[root@VM_152_184_centos /]# w20:50:14 up 9 days,  5:58,  3 users,  load average: 0.21, 0.05, 0.02
USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    101.45.224.253   20:48    0.00s  0.00s  0.00s w
root     pts/1    101.45.224.253   20:49   17.00s  0.00s  0.00s -bash
hmj      pts/2    101.45.224.253   20:50    2.00s  0.00s  0.00s -bash

执行命令:

pkill -kill -t TTY值

例:踢掉已登录用户hmj

pkill -kill -t pts/2

再用w命令查看是否已经强制踢掉:

[root@VM_152_184_centos /]# w20:55:10 up 9 days,  6:03,  2 users,  load average: 0.03, 0.03, 0.00
USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    101.45.224.253   20:48    0.00s  0.00s  0.00s w
root     pts/1    101.45.224.253   20:49    5:13   0.00s  0.00s -bash

Oracle的时区问题

Oracle 9i 开始多了 3 个关于时间的数据类型:TIMESTAMP [(precision)] TIMESTAMP [(precision)] WITH TIME ZONE TIMESTAMP [(precision)] WITH LOCAL TIME ZONE,其中 TIMESTAMP [(precision)] WITH TIME ZONE 保存了时区信息。

1. Oracle 的时区设置

Oracle 的时区可以分为两种,一种是数据库的时区,一种是 session 时区,也就是客户端连接时的时区(经过实验,连接以后再修改客户端的时区,session 的时区不会更改)。

数据库的时区在创建数据库时可以通过在 create database 语句中加上 SET TIME_ZONE = ' { { + | - } hh : mi | time_zone_region } ' 来指定,如果,不指定,默认是按照数据库所在的操作系统时区来设定的。创建之后,可以通过 alter database 来修改。其中 time_zone_region 参数可以通过查询 V$TIMEZONE_NAMES 动态视图来获得所有支持的值。修改之后,需要重启数据库才能生效。经常有人会碰到无法修改的情况:

SQL> alter database set time_zone='+06:00';
alter database set time_zone='+06:00'
*
ERROR at line 1:
ORA-02231: missing or invalid option to ALTER DATABASE

TOM 对此问题有过解释,TIME_ZONE 的设定主要是为了 WITH LOCAL TIME ZONE,当 session 的时区和数据库的时区不同时,oracle 根据时区的差距转换到数据库的时间,再保存到数据库的 WITH LOCAL TIME ZONE 类型中,他是不保存时区的,所以需要 TIME_ZONE 来进行各种时区之间时间的转换(WITH TIME ZONE 类型保存了原始的时区,所以不需要 TIME_ZONE 的设置也可以进行各种时区之间的转换)。但数据库中一旦有了该类型,就不能通过 alter database 修改时区了,会得到上面的错误,可以通过下面的语句获得所有包含该类型的表,将他们删除之后,再修改。

select u.name || '.' || o.name || '.' || c.name TSLTZcolumn 
  from sys.obj$ o, sys.col$ c, sys.user$ u 
where c.type# = 231
   and o.obj# = c.obj# 
   and u.user# = o.owner#;

(一般查询后的结果为:OE.ORDERS.ORDER_DATE,指的是OE用户下的ORDERS表的ORDER_DATE字段使用了时区的信息:WITH LOCAL TIME ZONE,将此信息去掉就可以再修改了,修改好了之后需要重启数据库才能生效)

Session 的时区是根据客户端的时区来决定的,当然连接以后也可以通过 alter session 来改变。WITH LOCAL TIME ZONE 类型会根据 TIME_ZONE 的设置,自动把时间转换为 session 所在时区的时间显示出来,而 WITH TIME ZONE 因为保存了时区,不需要根据 TIME_ZONE 的设置来转换。

2. 查看时区

可以分别使用 SESSIONTIMEZONE / DBTIMEZONE 内建函数查看 session 和数据库时区:

SYS@SKYDB> select dbtimezone from dual;

DBTIME
------
+08:00

SYS@SKYDB> select sessiontimezone from dual;

SESSIONTIMEZONE
---------------------------------------------
+09:00

另外可以用 TZ_OFFSET 查询某时区和 UTC 之间的差值。

TZ_OFFSET ( { 'time_zone_name'
                        | '{ + | - } hh : mi'
                        | SESSIONTIMEZONE
                        | DBTMEZONE  }
                      )

SELECT TZ_OFFSET('US/Eastern') FROM DUAL;

TZ_OFFS
-------
-04:00

SELECT TZ_OFFSET(DBTIMEZONE) FROM DUAL;

TZ_OFFSET(DBTI
--------------
+08:00

其中 time_zone_name 也可以从 V$TIMEZONE_NAMES 获得。

3. 几个内建时间函数的比较

sysdate/systimestamp 都是返回数据库的时间并且使用数据库的时区,他们返回的是操作系统的时间。sysdate 返回的是 date 类型,没有时区信息,操作系统上是什么时间就返回什么时间;systimestamp 返回 TIMESTAMP WITH TIME ZONE 类新,有时区信息:

SYS@SKYDB> select sysdate from dual;

SYSDATE
-------------------
2006-08-03 10:01:31
SYS@SKYDB> select systimestamp from dual;

SYSTIMESTAMP
-----------------------------------------------
03-AUG-06 10.02.21.093000 AM +08:00

SYS@SKYDB> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.

修改操作系统时区为 +02:00

SYS@SKYDB> startup
ORACLE instance started.

Total System Global Area   89202456 bytes
Fixed Size                   454424 bytes
Variable Size              62914560 bytes
Database Buffers           25165824 bytes
Redo Buffers                 667648 bytes
Database mounted.
Database opened.

SYS@SKYDB> select sysdate from dual;

SYSDATE
-------------------
2006-08-03 04:03:37

SYS@SKYDB> select systimestamp from dual;

SYSTIMESTAMP
----------------------------------------------
03-AUG-06 04.04.15.687000 AM +02:00

注:不知道为什么不能通过 ipc 来连接本地数据了,登陆时使用 sqlplus "/@skydb as sysdba",也就是使用了监听器来连接,但在家里做相同的实验,通过 ipc 连接 sqlplus "/as sysdba",修改时区后,sysdate 依然显示修改前的时间,而 systimestamp 却正确,不知道是什么原因:

SQL> select sysdate from dual;

SYSDATE
-------------------
2006-02-08 22:21:40

SQL> select systimestamp from dual;

SYSTIMESTAMP
---------------------------------------------------------------------------
02-AUG-06 10.22.38.578000 PM +08:00

SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
修改时区为 +09:00
SQL> startup
ORACLE instance started.

Total System Global Area  131145064
bytes

Fixed Size                   453992
bytes

Variable Size             109051904
bytes

Database Buffers           20971520
bytes

Redo Buffers                 667648

bytes

Database mounted.
Database opened.
SQL> select sysdate from dual;

SYSDATE
---------
02-AUG-06

SQL> alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';

Session altered.

SQL> select sysdate from dual;

SYSDATE
-------------------
2006-08-02 22:32:59              <- 还是之前的时间

SQL> select systimestamp from dual;

SYSTIMESTAMP
---------------------------------------------------------------------------
02-AUG-06 11.35.05.171000 PM +09:00          <- 时间正确

另外,有个初始化参数 fixed_date,可以设置 sysdate 返回指定的时间:

alter system set fixed_date='2005-04-04-11-00-00'

this fixed_date is normally used, in oracle, for dubugging purpose.

once finishing it, you can set it back:

alter system set fixed_date=none

current_timestamp/current_date 也会返回数据库的时间,但转换为 session 的时区进行显示,可以使用 alter session set time_zone 改变 session 时区。

4. 四个日期时间类型的实验

SQL> select dbtimezone from dual;

DBTIME
------
+06:00

SQL> select sessiontimezone from dual;

SESSIONTIMEZONE
---------------------------------------------------------------------------
+08:00

SQL> ed
Wrote file afiedt.buf

1  create table tztest(a date,
  2  b timestamp(0),
  3  c timestamp(0) with time zone,
  4* d timestamp(0) with local time zone)
SQL> /

Table created.

SQL> alter session set nls_date_format ='yyyy-dd-mm hh24:mi:ss';

Session altered.

SQL> select sysdate from dual;

SYSDATE
-------------------
2006-02-08 22:21:40

SQL> select systimestamp from dual;

SYSTIMESTAMP
---------------------------------------------------------------------------
02-AUG-06 10.22.38.578000 PM +08:00

SQL> select current_date from dual;

CURRENT_DATE
-------------------
2006-02-08 22:23:50

SQL> select current_timestamp from dual;

CURRENT_TIMESTAMP
---------------------------------------------------------------------------
02-AUG-06 10.24.04.031000 PM +08:00

SQL> insert into tztest
  2  values(sysdate,systimestamp,systimestamp,systimestamp);

1 row created.

SQL> commit;

Commit complete.

SQL> select * from tztest;

A
-------------------
B
---------------------------------------------------------------------------
C
---------------------------------------------------------------------------
D
---------------------------------------------------------------------------
2006-02-08 22:25:59
02-AUG-06 10.25.59 PM
02-AUG-06 10.25.59 PM +08:00
02-AUG-06 10.25.59 PM

SQL> exit
Disconnected from Oracle9i Enterprise Edition Release 9.2.0.3.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.3.0 - Production

修改了客户端操作系统的时区

C:\Documents and Settings\Administrator>sqlplus sky/xxxx

SQL*Plus: Release 9.2.0.3.0 - Production on Wed Aug 2 23:28:01 2006

Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.

Connected to:
Oracle9i Enterprise Edition Release 9.2.0.3.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.3.0 - Production

SQL> alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';

Session altered.

SQL> select sysdate from dual;

SYSDATE
-------------------
2006-08-02 22:28:49        <-数据库没有重启,时间依然是修改前的

SQL> select systimestamp from dual;

SYSTIMESTAMP
---------------------------------------------------------------------------
02-AUG-06 11.29.33.609000 PM +09:00  <- 这里却已经改变了,有时区信息,自动转换了?

SQL> select * from tztest;

A
-------------------
B
---------------------------------------------------------------------------
C
---------------------------------------------------------------------------
D
---------------------------------------------------------------------------
2006-08-02 22:25:59                       <- 没变
02-AUG-06 10.25.59 PM                  <- 没变
02-AUG-06 10.25.59 PM +08:00      <- 保存时区信息
02-AUG-06 11.25.59 PM                  <-自动转换为 session 的时区

转载于:https://www.cnblogs.com/klb561/p/10623873.html

linux OS与SQL修改时区,系统时间相关推荐

  1. linux修改硬件系统时间,Linux修改日期、时间,系统与硬件时间

    Linux的时间分为两种,硬件时间和系统时间两种: 一.查看与修改系统时间 查看系统时间:date # date Fri Nov 26 15:20:18 CST 1999 用指定的格式显示系统时间:  ...

  2. Linux修改时区和时间

    Linux修改时区和时间 修改时区: 1> 找到相应的时区文件 /usr/share/zoneinfo/Asia/Shanghai  用这个文件替换当前的/etc/localtime文件.  或 ...

  3. 如何修改树莓派系统时间

    当我们刚刚烧录好树莓派系统之后,使用date命令就可以看出时间与本地时间不相同,我们可以使用以下命令来更新自己树莓派的时间. 修改时区及时间 输入以下命令 sudo dpkg-reconfigure ...

  4. QT在linux环境下读取和设置系统时间

    QT在linux环境下读取和设置系统时间 本文博客链接:http://blog.csdn.net/jdh99,作者:jdh,转载请注明. 环境: 主机:Fedora12 开发软件:QT 读取系统时间 ...

  5. linux 脚本中修改时区没有生效,linux系统修改时区,时间,立即生效

    时区的配置文件是/etc/sysconfig/clock.用tzselect命令就可以修改这个配置文件,根据命令的提示进行修改就好了. 但是在实际工作中,发现这种方式是不能够使得服务器上的时间设置马上 ...

  6. linux查看和修改当前系统时间

    一.查看和修改Linux的时区 1. 查看当前时区 命令 : "date -R" 2. 修改设置Linux服务器时区 方法 A 命令 : "tzselect" ...

  7. Linux查看与修改时区、时间的命令

    1.查看.修改Linux时区与时间 一.linux时区的查看与修改 1,查看当前时区 date -R 2,修改设置时区 方法1: tzselect 方法2: 仅限于RedHat Linux 和 Cen ...

  8. Linux 修改时区和时间

    时区文件 CentOS 和 Ubuntu 的时区文件是 /etc/localtime , 但是在 CentOS7 以后 localtime 以及变成了一个链接文件 : # ll /etc/localt ...

  9. linux修改是时间格式,linux修改时区,时间格式

    修改为重庆的时区: 查看当前时区 date cp -vf /usr/share/zoneinfo/Asia/Chongqing  /etc/localtime vim /etc/sysconfig/c ...

最新文章

  1. Co-Fusion:物体级别的语义SLAM
  2. [转]Git忽略提交规则 - .gitignore配置运维总结
  3. Kotlin实战指南九:延迟初始化
  4. 以下不能在python编译环境_win7 下解决python 集成编译环境IDLE无法打开的问题。...
  5. 跟你们讲一个鬼故事,TA回来了!
  6. 【java】java基础之SPI框架实现-整体设计
  7. 识别连笔字的软件_司捷分件著录软件下载-司捷分件著录软件最新版下载[文件分件]...
  8. protobuf(Protocol Buffers)java初体验
  9. .net垃圾回收学习[NET 2.0 Performance Guidelines - Garbage Collection][翻译加学习]
  10. 极客大学产品经理训练营 用例Use Case 第8课总结
  11. 下载VCForPython27.msi
  12. java美图秀秀,SpringMvc整合美图秀秀M4(头像编辑器)
  13. 计算机主板设置中的英语,技嘉主板bios设置教程,技嘉主板bios中英文对照表
  14. 线性代数-矩阵方程应用:配平化学方程式
  15. 三十一 我在软件园的那些日子里
  16. 前端的debug调试
  17. 取消php网站验证码,如何取消网站后台的登陆验证码
  18. Win10将用户名修改为英文
  19. Pandas实用的25个技巧
  20. 《Android 开发入门与实战(第二版)》——导读

热门文章

  1. hazelcast 搭建_hazelcast Management Center 源码分析
  2. 1和4互素吗_互素是什么意思?1~10中与10互素的数有多少个
  3. Caused by: java.io.IOException: Keystore was tampered with, or password was incorrect
  4. nltk,wordnet安装时出现问题关于omw-1.4
  5. exo文件_eXo平台概述
  6. 保研面试/考研复试高等数学问题整理
  7. 【中医学】10 针灸-2:常用腧穴
  8. 王者荣耀微信登陆不了服务器,王者荣耀微信区怎么登陆不了 王者荣耀微信区怎么登不上...
  9. Java设计模式——依赖倒转原则
  10. 古希腊的对外战争,兼谈希腊罗马的军制和战斗力