> Linux教程 > linux基础 >

Linux修改语言、时区和时间

修改语言:

# vi /etc/sysconfig/i18n
LANG="en_US.UTF-8"
SYSFONT="latarcyrheb-sun16"

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

ZONE="Asia/Shanghai" 

UTC=true 

ARC=false

在/etc/profile文件里加入

export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8
source /etc/profile

修改时区:

新装的服务器可能设置了错误的,需要调整时区并调整时间.如下是使用NTP来从一个时间服务器同步

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

ntpdate us.pool.ntp.org

很简单吧,解析一下,第一句是把当前时区调整为上海就是+8区,想改其他时区也可以去看看/usr/share/zoneinfo目录;

然后第二句是利用ntpdate同步标准时间.

 

没有安装ntpdate的可以yum一下:

yum install ntp

加入定时计划任务,每隔10分钟同步一下时钟

crontab -e

*/10 * * * * root /usr/sbin/ntpdate us.pool.ntp.org | logger -t NTP

中国国家授时中心: 
http://www.time.ac.cn/stime.asp

其他网络时间服务器地址如下:(也可以自己去搜索下)

time.nist.gov (美国) 
ntp.fudan.edu.cn (复旦) )(国内用户推荐使用此服务器) 
timekeeper.isi.edu 
subitaneous.cpsc.ucalgary.ca 
usno.pa-x.dec.com 
time.twc.weather.com 
swisstime.ethz.ch 
ntp0.fau.de 
ntp3.fau.de 
time-a.nist.gov 
time-b.nist.gov 
time-nw.nist.gov 
nist1-sj.glassey.com

210.72.145.44 也是一个不错的地址,速度很快!

PS:如果出现没有权限的 错误,请在iptables加上

-A OUTPUT -p udp --dport 123 -j ACCEPT

 

1>
找到相应的时区文件 /usr/share/zoneinfo/Asia/Shanghai 
用这个文件替换当前的/etc/localtime文件。 

cp /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}"

(责任编辑:IT)