Linux修改时区和时间

Linux修改时区和时间
Linux修改时区和时间

Linux修改时区和时间

修改时区:

1>

找到相应的时区文件/usr/share/zoneinfo/Asia/Shanghai

用这个文件替换当前的/etc/localtime文件。

或者找你认为是标准时间的服务器,然后

#scp root@xxx.xxx.xxx.xxx:/etc/localtime /etc/localtime

2>

修改/etc/sysconfig/clock文件,修改为:

ZONE="Asia/Shanghai"

UTC=false

ARC=false

修改日期时间

1>

用date修改日期时间

#date -s 08/24/2006

#date -s 13:02:00

2>

同步BIOS时钟,强制把系统时间写入CMOS

#clock -w

另外,查看Bois时间用#hwclock -r

#tzselect 可以交互式修改时区

Linux修改系统时区

1. 查看当前时区

# vi /etc/sysconfig/clock

2. 修改设置时区

方法(1) # tzselect 方法(2 仅限于RedHat Linux 和CentOS) # timeconfig

3. 复制相应的时区文件,替换系统默认时区

# cp /usr/share/zoneinfo/$主时区/$次时区/etc/localtime 对于中国服务器则执行:# cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

4. 将当前时间写入BIOS永久生效(避免重启后失效)

# hwclock

在inux的shell下获取时间戳一般用两种方法,一是直接调用系统变量;二是用纯shell脚本获取,举例如下

一,直接调用系统变量

获取今天时期:date +%Y%m%d` 或date +%F

获取昨天时期:`date -d yesterday +%Y%m%d`

获取前天日期:`date -d -2day +%Y%m%d`

依次类推比如获取10天前的日期:`date -d -10day +%Y%m%d`

注意以上中间有空格

二,自己用shell实现,如下例子是已知今天日期,推算出昨天的日期的shell

startdate=`date`

d1=`date '+%Y%m%d'`

if test ! "$1" = ""

then

d1=$1

fi

echo "TODAY IS ${d1}"

yesterday()

{

YEAR=`expr substr "${d1}" 1 4`

MONTH=`expr substr "${d1}" 5 2`

DAY=`expr substr "${d1}" 7 2`

if [ $DAY -eq 1 ]

then

if [ $MONTH -eq 1 ]

then

YEAR=`expr $YEAR - 1`

MONTH=12

else

MONTH=`expr $MONTH - 1`

fi

DAY=`echo \`cal $MONTH $YEAR\`|tail -n1|awk '{print $NF}'`

else

DAY=`expr $DAY - 1`

fi

d2=`echo "$YEAR $MONTH $DAY"|awk '{if (length($2)==1) $2=0$2;if (length($3)==1) $3=0$3;printf "%s%s%s",$1,$2,$3}'`

}

yesterday

echo "yesterday IS ${d2}"

关于二中的shell脚本不完善,还有些bug比如计算平年和闰年的时候4月份的天数就弄错了,有兴趣的朋友可以继续

linux 的系统时间和硬件时间查看修改

linux 的系统时间有时跟硬件时间是不同步的 Linux时钟分为系统时钟(System Clock)和硬件(Real Time Clock,简称RTC)时钟。系统时钟是指当前Linux Kernel中的时钟,而硬件时钟则是主板上由电池供电的时钟,这个硬件时钟可以在BIOS中进行设置。当Linux启动时,硬件时钟会去读取系统时钟的设置,然后系统时钟就会独立于硬件运作。 Linux中的所有命令(包括函数)都是采用的系统时钟设置。在Linux中,用于时钟查看和设置的命令主要有date、hwclock和clock。其中,clock和hwclock用法相近,只用一个就行,只不过clock命令除了支持x86硬件体系外,还支持Alpha硬件体系。 1、date 查看系统时间 # date 设置系统时间 # date --set “07/07/06 10:19" (月/日/年时:分:秒) 2、hwclock/clock 查看硬件时间 # hwclock --show 或者# clock --show 设置硬件时间 # hwclock --set --date="07/07/06 10:19" (月/日/年时:分:秒) 或者# clock --set --date="07/07/06 10:19" (月/日/年时:分:秒) 3、硬件时间和系统时间的同步 按照前面的说法,重新启动系统,硬件时间会读取系统时间,实现同步,但是在不重新启动的时候,需要用hwclock或clock命令实现同步。 硬件时钟与系统时钟同步:# hwclock --hctosys(hc代表硬件时间,sys代表系统时间)或者# clock --hctosys 系统时钟和硬件时钟同步:# hwclock --systohc或者# clock --systohc

最新整理Linux系统修改时间用什么命令

L i n u x系统修改时间用什么命令 L i n u x中除了在控制面板手动设置时间外,还能用命令直接修改,如果熟悉命令的话,非常快,具体怎么操作呢。下面由学习啦小编为大家整理修改l i n u x时间的命令的相关知识,希望对大家有帮助! 修改l i n u x时间命令 我们一般使用d a t e-s命令来修改系统时间。比如将系统时间设定成1996年6月10日的命令如下。 #d a t e-s06/10/96 将系统时间设定成下午1点12分0秒的命令如下。 #d a t e-s13:12:00 注意,这里说的是系统时间,是l i n u x由操作系统维护的。 在系统启动时,L i n u x操作系统将时间从C M O S中读到系统时间变量中,以后修改时间通过修改系统时间实现。为了保持系统时间与C M O S时间的一致性, L i n u x 每隔一段时间会将系统时间写入C M O S。由于该同步是每隔一段时间(大约是11分钟)进行的,在我们执行d a t e -s后,如果马上重起机器,修改时间就有可能没有被写入C M O S,这就是问题的原因。如果要确保修改生效可以

执行如下命令。 #h w c l o c k-w 这个命令强制把系统时间写入C M O S 相关阅读:L i n u x常用基本命令 文件名--t e s t m k d i r t e s t创建一个文件夹 m k d i r t e s t/t e s t1/t e s t2-p在创建t e s t1时候,继续创建t e s t2目录,一起创建 m v t e s t t e s t1修改文件名称 m v t e s t/位置复制文件到指定位置 c a t t e s t查看文件内容 u n z i p解压包解压当前文件 u n z i p解压包 -d/位置解压压缩包到指定位置 r m t e s t删除一个文件 r m-r f t e s t删除一个带文件或者文件夹的文件目录 c p t e s t t e s t1复制一个文件 c p-r t e s t t e s t1复制一个文件夹(包含文件夹下的文件) v i文件名修改文件内容

linux之修改时钟(rtc)

Linux下的时钟 ========================= 第一部分:时间设置 ========================= 我们一般使用“date -s”命令来修改系统时间(这里说的是系统时间,是linux由操作系统维护的) 将日期时间设置成2014年8月7日下午3点5分0秒可以用 #date -s "08/07/2014 15:05:00" #date -s "2014-08-07 15:05:00" 这里的格式是"MM/DD/YYYY hh:mm:ss" 或者 #date 080715052014.00 这里的格式是MMDDhhmmYYYY.ss (月日时分年.秒) 在系统启动时,Linux操作系统将时间从CMOS中读到系统时间变量中,以后修改时间通过修改系统时间实现。为了保持系统时间与CMOS时间的一致性,Linux每隔一段时间会将系统时间写入CMOS。由于该同步是每隔一段时间(大约是11分钟)进行的,在我们执行date -s后,如果马上重起机器,修改时间就有可能没有被写入CMOS,这就是问题的原因。如果要确保修改生效可以执行如下命令。 #hwclock -w 这个命令强制把系统时间写入CMOS,(等同于hwclock --systohc) linux提供两类的rtc兼容性很高的用户空间系统调用接口,如下所示: (1)/dev/rtc ... 这个RTC适合pc体系的系统,而并不适合非x86体系的系统 (2)/dev/rtc0,/dev/rtc1 ... 他们依赖一种架构,这种架构在所有的系统上被RTC 芯片广泛的支持。 程序员必须知道,PC/AT的功能不总是有效,其他的系统可能会有另外的实现。这种情况下,如果在相同的系统结构上使用同样的RTC API,那么硬件会有不同的反应。例如,不是每一个RTC都提供IRQ,所以这些不能处理报警中断;标准的PC系统RTC只能处理未来24小时以内的闹钟,而其他系统的RTC可能处理未来一个世纪的任何时间。 在文件系统修改将rtc0改成rtc1 Vi etc/udev/rules.d/local.conf 或者在启动开发板下 设置系统时间 date -s "2014-08-07 15:05:00"

Centos设置时区并调整时间

Centos设置时区并调整时间 租用的经常是国外的服务器,需要调整时区并调整时间.当然方法有很多种,我说说我经常用,而且是最简单的方法吧. cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime ntpdate https://www.360docs.net/doc/b07840649.html, 很简单吧,解析一下,第一句是把当前时区调整为上海就是+8区,想改其他时区也可以去看看/usr/share/zoneinfo目录;然后第二句是利用ntpdate同步标准时间. 没有ntpdate的可以yum一下: yum install -y ntpdate 另外VMWARE下的linux时间老是不对,也可以用ntpdate来调整,算最烂的方法吧 crontab -e * * * * * /usr/sbin/ntpdate https://www.360docs.net/doc/b07840649.html, | logger -t NTP 设置修改CentOS系统时区 在我们使用CentOS系统的时候,也许时区经常会出现问题,有时候改完之后还是会出错,下面我们就来学习一种方法来改变这个状况。如果没有安装,而你使用的是 CentOS系统那使用命令 yum install ntp 然后:ntpdate https://www.360docs.net/doc/b07840649.html, 。 因为CentOS系统是用rhas的源码再编译的,很多地方是完全一样的。

rhas5的时区是以文件形式存在的,当前的时区文件是在/etc/localtime 那么其他时区的文件存放在哪里呢? 在/usr/share/zoneinfo下 我们用东八区,北京,上海的时间 #cp -f /usr/share/zoneinfo/Asia/Shanghai /etc/localtime #reboot 重启之后,date查看时间、查看当前时区 date -R、查看/修改Linux时区和时间 一、时区 1. 查看当前时区 date -R 2. 修改设置时区 方法(1) tzselect 方法(2) 仅限于RedHat Linux 和 CentOS系统 timeconfig 方法(3) 适用于Debian dpkg-reconfigure tzdata 3. 复制相应的时区文件,替换CentOS系统时区文件;或者创建链接文件 cp /usr/share/zoneinfo/$主时区/$次时区 /etc/localtime 在中国可以使用: cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 二、时间 1、查看时间和日期 date

Linux系统调用_时间

asctime(将时间和日期以字符串格式表示) 相关函数 time,ctime,gmtime,localtime 表头文件 #include 定义函数 char * asctime(const struct tm * timeptr); 函数说明 asctime()将参数timeptr所指的tm结构中的信息转换成真实世界所使用的时间日期表示方法,然后将结果以字符串形态返回。此函数已经由时区转换成当地时间,字符串格式为:“Wed Jun 30 21:49:08 1993\n” 返回值 若再调用相关的时间日期函数,此字符串可能会被破坏。此函数与ctime不同处在于传入的参数是不同的结构。 附加说明 返回一字符串表示目前当地的时间日期。 范例 #include main() { time_t timep; time (&timep); printf(“%s”,asctime(gmtime(&timep))); } 执行 Sat Oct 28 02:10:06 2000 ctime(将时间和日期以字符串格式表示) 相关函数 time,asctime,gmtime,localtime 表头文件 #include 定义函数 char *ctime(const time_t *timep); 函数说明 ctime()将参数timep所指的time_t结构中的信息转换成真实世界所使用的时间日期表示方法,然后将结果以字符串形态返回。此函数已经由时区转换成当地时间,字符串格式为“Wed Jun 30 21 :49 :08 1993\n”。若再调用相关的时间日期函数,此字符串可能会被破坏。返回值 返回一字符串表示目前当地的时间日期。 范例

linux下获取系统时间的方法

linux下获取系统时间的方法 时间:2009-11-11 13:45:04 来源:Linux联盟作者:可以用localtime 函数分别获取年月日时分秒的数值。 Linux下获得系统时间的C语言的实现方法: 1. 可以用localtime 函数分别获取年月日时分秒的数值。 #include //C语言的头文件 #include //C语言的I/O void main() { time_t now; //实例化time_t结构 struct tm *timenow; //实例化tm结构指针 time(&now); //time函数读取现在的时间(国际标准时间非北京时间),然后传值给now timenow = localtime(&now); //localtime函数把从time取得的时间now换算成你电脑中的时间(就是你设置的地区) printf("Local time is %sn",asctime(timenow)); //上句中asctime函数把时间转换成字符,通过printf()函数输出 } 注释:time_t是一个在time.h中定义好的结构体。而tm结构体的原形如下: struct tm { int tm_sec;//seconds 0-61 int tm_min;//minutes 1-59 int tm_hour;//hours 0-23 int tm_mday;//day of the month 1-31 int tm_mon;//months since jan 0-11 int tm_year;//years from 1900 int tm_wday;//days since Sunday, 0-6 int tm_yday;//days since Jan 1, 0-365 int tm_isdst;//Daylight Saving time indicator }; 2. 对某些需要较高精准度的需求,Linux提供了gettimeofday()。

linux修改时间日期

linux修改时间和日期的方法 修改linux的时间可以使用date指令 修改日期: 时间设定成2009年5月10日的命令如下: #date -s 05/10/2009 修改时间: 将系统时间设定成上午10点18分0秒的命令如下。 #date -s 10:18:00 修改时区: 找到相应的时区文件/usr/share/zoneinfo/Asia/Shanghai替换当前的/etc/localtime。 修改/etc/sysconfig/clock文件的内容为: ZONE=”Asia/Shanghai” UTC=false ARC=false 同步bios时间: 同步BIOS时钟,强制把系统时间写入CMOS,命令如下: #clock -w 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命令显示时间。 例1:用指定的格式显示时间。 $ date '+This date now is =>%x ,time is now =>%X ,thank you !' This date now is =>11/12/99 ,time is now =>17:53:01,thank you ! 例2:用预定的格式显示当前的时间。 # date

linux系统时区设置

linux系统时区设置 系统时钟设置 格式:date 月/日时:分:年.秒 [root@localhost ~]# date 080319462010.55 二 8月 3 19:46:55 CST 2010 或使用date –set (月/日/年时:分:秒)设置时钟。 [root@localhost ~]# date –set “08/30/2010 09:50:11″(月/日/年时:分:秒)一 8月 30 09:50:11 CST 2010 查看系统时钟 [root@localhost ~]# date 日 8月 1 15:56:27 CST 2010 hwclock | clock时钟查看相同 [root@localhost ~]# hwclock –show 2010年08月01日星期日 16时07分01秒 -0.185252 seconds 设置硬件时钟 硬件时钟设置格式:hwclock | clock –set –date=(”月/日/年时:分:秒”)[root@localhost ~]# hwclock –set –date=”08/03/2010 19:57″ [root@localhost ~]# clock 2010年08月03日星期二 19时57分07秒 -0.462124 seconds [root@localhost ~]# clock –set –date=”08/03/10 20:00″ [root@localhost ~]# hwclock 2010年08月03日星期二 20时00分08秒 -0.236903 seconds 系统与硬件时钟同步 [root@localhost ~]# hwclock –systohc [root@localhost ~]# date 二 8月 3 19:59:23 CST 2010 [root@localhost ~]# clock 2010年08月03日星期二 19时59分32秒 -0.813133 seconds [root@localhost ~]# clock –systohc [root@localhost ~]# date 二 8月 3 20:00:06 CST 2010 将时钟信息永久写入BIOS中,避免重启系统时钟失效。 hwclock / clock -w 系统时区设置 使用tzselect设置系统时区。 [root@localhost ~]# tzselect Please identify a location so that time zone rules can be set correctly. Please select a continent or ocean. 1) Africa 2) Americas 3) Antarctica 4) Arctic Ocean 5) Asia 6) Atlantic Ocean

linux统计目录下的文件个数及修改时间

linux下如何查询文件数量? 我将linux下某一目录的所有文件ftp到一台windows机器上,我想知道是否下载完全了就必须比较文件夹的大小和文件夹下文件的总数量,在linux下该用什么命令啊? 文件大小可以du -sh /var类似这样的,文件数量 查看文件夹下的文件个数(当前目录的文件数) ls -l |grep "^-" | wc -l ls -l 长列表输出该目录下文件信息(注意这里的文件,不同于一般的文件,可能是目录、链接、设备文件等) grep ^- 这里将长列表输出信息过滤一部分,只保留一般文件,如果只保留目录就是 ^d wc -l 统计输出信息的行数,因为已经过滤得只剩一般文件了,所以统计结果就是一般文件信息的行数,又由于一行信息对应一个文件,所以也就是文件的个数。 查看文件夹下的文件个数(当前目录的文件和子文件夹的文件数) find ./ -type f | wc -l 或者 ls -lR|grep "^-"|wc -l Linux下查看当前目录下文件的个数ls -l | grep “^-”| wc -l 查看当前目录下文件的个数,包括子目录里的。 ls -lR| grep “^-” | wc -l 查看某目录下文件夹(目录)的个数,包括子目录里的。 ls -lR| grep “^d” | wc -l 简要说明: ls -l 长列表输出该目录下文件信息(注意这里的文件,不同于一般的文件,可能是目录、链接、设备文件等) grep “^-” 这里将长列表输出信息过滤一部分,只保留一般文件,如果只保留目录就是^d wc -l

统计输出信息的行数,因为已经过滤得只剩一般文件了,所以统计结果就是一般文件信息的行数,又由于一行信息对应一个文件,所以也就是文件的个数 Linux系统中打开文件数量的查看方法 文章转载自网管之家:https://www.360docs.net/doc/b07840649.html,/os/linux/200804/137662.html ulimit -n 4096 也就是限制用户的最大文件打开数为4096个 在网上查了关于怎么查看文件打开数的文章大致有两种说法 /proc/sys/fs/file-nr 该文件与file-max 相关,它有三个值: 已分配文件句柄的数目 已使用文件句柄的数目 文件句柄的最大数目 该文件是只读的,仅用于显示信息。 查看所有进程的文件打开数 lsof |wc -l 查看某个进程打开的文件数 lsof -p pid |wc -l unix 文件大小,文件行数 #文件行数 file_count=`wc -l /odsstatfs/groupfile/${file_name} | awk '{print $1}'` echo "文件行数:${file_count}" #文件大小 file_size=`ls -l /odsstatfs/groupfile/${file_name} | awk '{print $5}'` echo "文件大小:${file_size}" 总结了一下有五种方法:

Linux时间同步,ntpd,ntpdate-简单设置

linux时间同步,ntpd、ntpdate 在Windwos中,系统时间的设置很简单,界面操作,通俗易懂。而且设置后,重启,关机都没关系。系统时间会自动保存在Bios的时钟里面,启动计算机的时候,系统会自动在Bios里面取硬件时间,以保证时间的不间断。 但在Linux下,默认情况下,系统时间和硬件时间,并不会自动同步。在Linux运行过程中,系统时间和硬件时间以异步的方式运行,互不干扰。硬件时间的运行,是靠Bios电池来维持,而系统时间,是用CPU tick来维持的。 在系统开机的时候,会自动从Bios中取得硬件时间,设置为系统时间。 一.Linux系统时间的设置 在Linux中设置系统时间,可以用date命令: //查看时间 [root@localhost ~]# date 2008年12月12日星期五14:44:12 CST //修改时间 [root@localhost ~]# date --set "1/1/09 00:01" <== (月/日/年时:分:秒) 2009年01月01日星期四00:01:00 CST //date 有几种时间格式可接受,这样也可以设置时间: [root@localhost ~]# date 012501012009.30 <== 月日时分年.秒 2009年01月25日星期日01:01:30 CST 二.Linux硬件时间的设置 硬件时间的设置,可以用hwclock或者clock命令。其中,clock和hwclock用法相近,只用一个就行,只不过clock命令除了支持x86硬件体系外,还支持Alpha硬件体系。 //查看硬件时间可以是用hwclock ,hwclock --show 或者hwclock -r [root@localhost ~]# hwclock --show 2008年12月12日星期五06时52分07秒-0.376932 seconds //设置硬件时间 [root@localhost ~]# hwclock --set --date="1/25/09 00:00" <== 月/日/年时:分:秒 [root@localhost ~]# hwclock 2009年01月25日星期日00时00分06秒-0.870868 seconds 三.系统时间和硬件时间的同步

关于学linux的几点建议

---------------------------------------------------------------最新资料推荐------------------------------------------------------ 关于学linux的几点建议 1. 不要当传教士很多人在讨论区不断的引起 Linux vs. Windows 之类的讨论,甚至争的面红耳赤,这是没有必要的。 这种争论是浪费时间而没有任何用处的。 对,你花了一下午,用许多事实捍卫了 Linux 比 Windows 好这个说法。 但是 Windows 的支持者并不会喜欢上 Linux,他们只是稍微退缩一下,然后找一些新的证据来跟你辩论。 世界上的人们都在利用 Linux 研究最前沿的科学,我们还在这里讨论要不要用 Linux 这种无聊的问题,什么时候才能赶上时代前进的步伐?什么叫做 Windows 支持者,什么叫做 Linux 支持者?我们为什么要支持某一个而反对另外一个?你不需要为Linux 囗囗,不需要成为 Linux 支持者或者 GNU 传教士,GNU/ Linux 已经用事实向世界证明了它们的威力,已经被大多数人接受。 你只需要安安静静享受 GNU/ Linux 给你的乐趣和自由。 你需要关心的不是你的工具是什么,而是你用它做了什么。 精通 Linux 并不说明任何问题,因为它只是一个工具而已。 如果你用 Windows 能很好的完成你的任务,那你就没有必要费时间去熟悉 Linux。 直到有一天你发现一项任务只有 Linux 才能完成的时候再换 1 / 9

也不迟,因为你身边的 Linux 的爱好者一定会很乐意的帮助你。 工具不是人,不应该对工具有感情。 这是你在进行任何对工具的讨论前需要提醒自己的事情。 面对一些容易引起争论的东西: Word 和 TeX; Emacs和 VIM; MAXIMA, Mathematica 和Maple; Gnome, FVWM 和 KDE; Mutt 和 Pine 一定要冷静的对自己说: 我不站在它们任何一边,因为它们不是人。 各人的需要不同,生活的环境不同。 对你来说好的东西,对别人来说不一定好,我们需要尊重别人的选择。 如果你当面说别人正在用的程序不好,没有人会乐意接受你的意见。 我从来没有建议过我爸爸不用 Windows + WPS,而用 Linux + LaTeX来处理他的英语试卷。 因为 WPS 是我爸爸的选择,他能用 WPS 编辑出很好的试题去测试他的学生,那就足够了。 我曾经帮我爸爸做了一个 perl 程序,能够自动从一种我自己设计的 markup 语言转化成 LaTeX格式的英语试卷。 可以自动对试题编号,乱序排版选择题的选项,自动生成答案表,生成老师用的显示答案的版本,自动对短文改错题进行优化分段,自动拼写检查,图形化的配置方式我爸爸高兴的用了一段

linux下的时间转换函数

linux下的时间函数 我们在编程中可能会经常用到时间,比如取得系统的时间(获取系统的年、月、日、时、分、秒,星期等),或者是隔一段时间去做某事,那么我们就用到一些时间函数。 linux下存储时间常见的有两种存储方式,一个是从1970年到现在经过了多少秒,一个是用一个结构来分别存储年月日时分秒的。 time_t 这种类型就是用来存储从1970年到现在经过了多少秒,要想更精确一点,可以用结构struct timeval,它精确到微妙。 struct timeval { long tv_sec; /*秒*/ long tv_usec; /*微秒*/ }; 而直接存储年月日的是一个结构: struct tm { int tm_sec; /*秒,正常范围0-59,但允许至61*/ int tm_min; /*分钟,0-59*/ int tm_hour; /*小时,0-23*/ int tm_mday; /*日,即一个月中的第几天,1-31*/ int tm_mon; /*月,从一月算起,0-11*/ int tm_year; /*年,从1900至今已经多少年*/ int tm_wday; /*星期,一周中的第几天,从星期日算起,0-6*/ int tm_yday; /*从今年1月1日到目前的天数,范围0-365*/ int tm_isdst; /*日光节约时间的旗标*/ };

需要特别注意的是,年份是从1900年起至今多少年,而不是直接存储如2008年,月份从0开始的,0表示一月,星期也是从0开始的,0表示星期日,1表示星期一。 下面介绍一下我们常用的时间函数: #include char *asctime(const struct tm* timeptr); 将结构中的信息转换为真实世界的时间,以字符串的形式显示 char *ctime(const time_t *timep); 将timep转换为真是世界的时间,以字符串显示,它和asctime不同就在于传入的参数形式不一样 double difftime(time_t time1, time_t time2); 返回两个时间相差的秒数 int gettimeofday(struct timeval *tv, struct timezone *tz); 返回当前距离1970年的秒数和微妙数,后面的tz是时区,一般不用 struct tm* gmtime(const time_t *timep); 将time_t表示的时间转换为没有经过时区转换的UTC时间,是一个struct tm结构指针 stuct tm* localtime(const time_t *timep); 和gmtime类似,但是它是经过时区转换的时间。 time_t mktime(struct tm* timeptr); 将struct tm结构的时间转换为从1970年至今的秒数 time_t time(time_t *t); 取得从1970年1月1日至今的秒数。 上面是简单的介绍,下面通过实战来看看这些函数的用法: 下载: gettime1.c 1. /*gettime1.c*/ 2. #include 3.

linux系统时间变化原因分析

. linux系统时间变化原因分析 Linux的时间有两种,一是系统时间,另外是硬件时间(BIOS时间)。 系统每次启动时会读出BIOS时间,将之赋给系统时间。之后系统时间将独立运行,而BIOS时间不会变化。 在BIOS时间中,有两种表示形式。一种是以localtime表示的,一种是以UTC表示的。具体查看的方式可以通过hwclock –debug,该命令可以输出当前硬件时间的表示形式。 下面例举各种情况下系统时间的变化: 1.当hwclock设定为localtime,/etc/sysconf/clock 中的 UTC=true时,重启后系统时间后相对于BIOS时间被提前8个小时。 2.当hwclock设定为localtime,/etc/sysconf/clock中的 UTC=false时,重启后系统时间相对于BIOS时间没有变化 3.当hwclock设定为UTC,/etc/sysconf/clock 中的 UTC=true时,重启后系统时间后相对于BIOS 时间无变化 4.当hwclock设定为UTC,/etc/sysconf/clock 中的 UTC=false时,重启后系统时间后相对于BIOS 时间被推后8个小时。 可见,当BIOS时间设置的类型和 /etc/sysconf/clock中的设置不一致时,就会导致系统启动时的系统时间错误。 如果有脚本实现时间同步,但是系统启动之后运行的。虽然时间同步可以将系统时间同步到正确时间,

但是由于之前的系统时间错误设定,将会出现一个错误的时间间隔,这个时间间隔可能会对依赖系统时间的程序产生影响。 对策:出现这种问题的根本原因是硬件时间的类型和 /etc/sysconf/clock中的设置不一致。所以我们将在时间同步脚本中增加对硬件时间的同步,这样可以解决这种问题。 注: UTC时间:世界协调时间(Universal Time Coordinated,UTC) ,也就是0时区的时间 CST时间:CST China Standard Time UTC+8:00 中国沿海时间(北京时间),这是我们所属时区的localtime。 2.关于时区的设置: 为保证时间的正确,应该把时区设置正确。设置正确仅是为了使得时间更好理解和其他方面的维护。 设置方法: 1. 手动设置时区: 例如:设置东八区的时间 ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 编辑/etc/sysconfig/clock中 ZONE="Asia/Shanghai" 2. 使用图形化命令设置 system-config-date (大部分情况仅限于RedHat和CentOS)或者使用 tzselect,按照命令提示进行即可。 原文摘自WDLINUX论坛

Windows与Linux(Ubuntu)双系统时间不一致的解决方法

Windows与Linux(Ubuntu)双系统时间不一致的解决方法 世界协调时间(Universal Time Coordinated,UTC),GPS系统中有两种时间区分,一为UTC,另一为LT(地方时)两者的区别为时区不同,UTC就是0时区的时间,地方时为本地时间,如北京为早上八点(东八区),UTC时间就为零点,时间比北京时晚八小时,以此计算即可. UTC相当于本初子午线(即经度0度)上的平均太阳时,过去曾用格林威治平均时(GMT)来表示.北京时间比UTC时间早8小时,以1999年1月1日0000UTC为例,UTC时间是零点,北京时间为1999年1月1日早上8点整。 GMT(Greenwich Mean Time)是格林尼治平时:由于地球轨道并非圆形,其运行速度又随着地球与太阳的距离改变而出现变化,因此视太阳时欠缺均匀性。视太阳日的长度同时亦受到地球自转轴相对轨道面的倾斜度所影响。为着要纠正上述的不均匀性,天文学家计算地球非圆形轨迹与极轴倾斜对视太阳时的效应。平太阳时就是指经修订后的视太阳时。在格林尼治子午线上的平太阳时称为世界时(UT0),又叫格林尼治平时(GMT)。由于两个系统设定时间时以主板CMOS内的时间为依据,但却有不同的时间计算标准。所以导致了系统时间的纠纷问题。 Linux和苹果操作系统以当前主板CMOS内时间做为格林威治标准时间,再根据系统设置的时区来最终确定当前系统时间(如时区设置为GMT+08:00北京时间时以及当前CMOS时间为03:00,那么系统会将两个时间相加得出显示在桌面的当前系统时间为11:00)。 Windows 操作系统却直接把CMOS时间认定为当前显示时间,不根据时区转换。这样每调整一次系统时区,系统会根据调整的时区来计算当前时间,确定后,也就同时修改了CMOS内的时间(即每调整一次时区,设置保存后,CMOS时间也将被操作系统改变一次,注意不同操作系统调整时间后,也会同时改变CMOS时间,这一点是共通的)。 这里我们且不论两种时间计算标准的好差,而仅让Windows认定CMOS时间为格林威治标准时间来消除操作系统之间认定时间的差异,从而解决Windows操作系统与不同操作系统并存时出现的时间矛盾。 也就是说,UTC即Universal Time Coordinated,协调世界时GMT即Greenwich Mean Time,格林尼治平时在这里,你可以把UTC认为是GMT+0。Windows(XP和VISTA)和(Linux/Unix/Mac)缺省看待系统硬件时间的方式是不一样的: * Windows把系统硬件时间当作本地时间(local time),即操作系统中显示的时间跟BIOS中显示的时间是一样的。 * Linux/Unix/Mac把硬件时间当作UTC,操作系统中显示的时间是硬件时间经过换算得来的,比如说北京时间是GMT+8,则系统中显示时间是硬件时间+8。 这样,当PC中同时有多系统共存时,就出现了问题。假如你的Ubuntu和WindowsXP中设置的时区都为北京时间东八区,而你在Ubuntu中把当前系统时间更改为9:00AM。则此时硬件中存储的实际是UTC时间1:00AM。这时你重启进入Windows后,你会发现windows系统中显示的时间是1:AM,比Ubuntu 中慢了八个小时。同理,你在Windows中更改或用网络同步了系统时间后,再到Ubuntu中去看,系统就会快了8小时。在实行夏令时的地区,情况可能会更复杂些。原因知道了,那怎么来解决这种冲突呢。一种就是让Windows把硬件时间当作UTC,与Linux/Unix/Mac保持一致。另一种就是让linux/Unix/Mac把系统时间当作本地时间,与Windows保持一致。

Linux系统时间设置手册

Linux系统时间设置手册

目录 目录 (2) 1引言 (3) 1.1目的 (3) 1.2对象 (3) 2修订历史 (3) 3参考资料 (3) 4术语与缩写 (3) 4.1术语 (3) 4.2缩写 (4) 5时间和时区 (4) 6如何设置Linux Time Zone (5) 7Real Time Clock(RTC) and System Clock (6)

1 引言 1.1 目的 本手册的编写目的是对配置Linux系统时间的相关步骤进行总结。 1.2 对象 本文档主要供下列人员使用: 实施人员――使用Linux系统 2 修订历史 3 参考资料 [1]. 4 术语与缩写 4.1 术语

4.2 缩写 5 时间和时区 如果有人问你说现在几点? 你看了看表回答他说晚上8点了. 这样回答看上去没有什么问题,但是如果问你的这个人在欧洲的话那么你的回答就会让他很疑惑,因为他那里还太阳当空呢. 这里就有产生了一个如何定义时间的问题. 因为在地球环绕太阳旋转的24个小时中,世界各地日出日落的时间是不一样的.所以我们才有划分时区(timezone) 的必要,也就是把全球划分成24个不同的时区. 所以我们可以把时间的定义理解为一个时间的值加上所在地的时区(注意这个所在地可以精确到城市) 地理课上我们都学过格林威治时间(GMT), 它也就是0时区时间. 但是我们在计算机中经常看到的是UTC. 它是Coordinated Universal Time的简写. 虽然可以认为UTC和GMT的值相等(误差相当之小),但是UTC已经被认定为是国际标准,所以我们都应该遵守标准只使用UTC 那么假如现在中国当地的时间是晚上8点的话,我们可以有下面两种表示方式: 20:00 CST 12:00 UTC 这里的CST是Chinese Standard Time,也就是我们通常所说的北京时间了. 因为中国处在UTC+8时区,依次类推那么也就是12:00 UTC了. 为什么要说这些呢? 第一,不管通过任何渠道我们想要同步系统的时间,通常提供方只会给出UTC+0的时间值而不会提供时区(因为它不知道你在哪里).所以当我们设置系统时间的时候,设置好时区是首先要做的工作

linux 下查看文件修改时间等

查看文件时间戳命令:stat awk.txt File: `awk.txt' Size: 20 Blocks: 8 IO Block: 4096 regular file Device: 801h/2049d Inode: 380730 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2008-04-26 01:50:44.000000000 +0800 Modify: 2008-04-26 01:48:18.000000000 +0800 Change: 2008-04-26 01:48:18.000000000 +0800 说明:Access访问时间。Modify修改时间。Change状态改变时间。可以stat *查看这个目录所有文件的状态。 现在是要过滤出Modify的时间戳,并以yyyyMMddHHSS格式保存,则可以利用下面这条命令: stat awk.txt | grep -i Modify | awk -F. '{print $1}' | awk '{print $2$3}'| awk -F- '{print $1$2$3}' | awk -F: '{print $1$2$3}' 输出结果:20080426014818 修改文件时间与创建新文件:touch 在介绍ls命令时,提到每个文件在Linux下面都会记录3个主要的修改时间: ? modification time(mtime,修改时间):当该文件的“内容数据”更改时,就会更新这个时间。内容数据指的是文件的内容,而不是文件的属性。 ? status time(ctime,状态时间):当该文件的”状态(status)”改变时,就会更新这个时间,举例来说,更改了权限与属性,就会更新这个时间。 ? access time(atime,存取时间):当“取用文件内容”时,就会更新这个读取时间。举例来说,使用cat去读取 ~/.bashrc,就会更新atime了。举例来说,我们来看一看/etc/man.config文件的时间。 [root@linux ~]# ls -l /etc/man.config -rw-r--r-- 1 root root 4506 Apr 8 19:11 /etc/man.config [root@linux ~]# ls -l --time=atime /etc/man.config -rw-r--r-- 1 root root 4506 Jul 19 17:53 /etc/man.config [root@linux ~]# ls -l --time=ctime /etc/man.config -rw-r--r-- 1 root root 4506 Jun 25 08:28 /etc/man.config 看到了吗?在默认的情况下,ls显示的是该文件的mtime,也就是这个文件的内容上次更改的时间。我的系统是在6/25安装的,因此,这个文件产生但状态更改的时间就回溯到那个时间点。因为刚才的范例中使用

linux模拟题

1、当系统工作负载增加时,CPU的 A 将占很大比重 A、用户时间 B、系统时间 C空闲时间、 D、进程时间 4、系统交换分区的类型代号为 A A、82 B、83 C、0b D、17 7、为了得到所有的命令行输入的参数,我们可以使用变量: B A、$# B、$@ C、$0 D、$! 9、通过修改文件 C ,可以设定开机时候自动安装的文件系统 A、/etc/mtab B、/etc/fastboot C、/etc/fstab D、/etc/inetd.conf 11、为了得到上一个后台执行的命令的PID,我们可以使用变量 D A、$# B、$@ C、$0 D、$! 12、在缺省情况下,使用ls -color命令显示当前目录下的所有文件时,对于可执行文件一般显示为 B A、红 B、绿 C、黄 D、蓝 13、使用at规划进程任务时,为了删除已经规划好的工作任务,我们可以使用 B 工具 A、atq B、atrm C、rm D、del P151 14、我们将逻辑分区建立在 B 分区上 A、从分区 B、扩展分区 C、主分区 D、第二分区 15、命令fdisk /mbr的作用是 B A、格式化主分区 B、删除安装在主分区的LiLo C、备份安装在主分区的LiLo D、安装LiLo到主分区 18、安装Linux需要正确的设定BIOS,一般应该关闭Memory Hole选项,其作用是: A A、防止Linux仅仅检测到16M内存 B、避免LiLo死机 C、让Linux正确的检测到网卡 D、支持从光盘启动 20、一般情况下,系统启动过程自动加载的文件系统信息是存放在 D 文件中 A、/usr/sbin/cfdisk B、/sbin/fdisk C、/etc/mtab D、/etc/fstab

相关文档
最新文档