cron任务中linux时区问题

查看当前linux“亚洲-上海”时区的路径:

# ls /usr/share/zoneinfo/Asia
Dhaka  Dubai  Hong_Kong  Karachi  Shanghai  Tokyo

系统通过读取/etc/localtime来设置当前时区,由下面可知当前设置的是世界时间,不是北京时间(世界时间偏移+8小时)

# ls -al /etc/localtime 
lrwxrwxrwx  1 root root    29 Jan  1  1970 localtime -> /usr/share/zoneinfo/Universal

通过执行软链接命令(ln -s),使/etc/localtime文件中写入的是想要设置的时区的路径,比如:

# ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
# ls -al /etc/localtime
lrwxrwxrwx  1 root root    33 Jun  3 10:37 localtime -> /usr/share/zoneinfo/Asia/Shanghai

此时,时区已经设置亚洲上海了(北京时间),但这还不够
需要在cron的环境中加入时区
修改 Contab 时区
vim /etc/crontab

添加变量

CRON_TZ=Asia/Shanghai
TZ=Asia/Shanghai

这样定时任务的时区才会转变过来