时区设置引起的一系列问题

这几天都在一直研究如何使用metabase和Kettle的事,我在一台Centos上使用Docker安装了metabase是,并用Docker部署一个Postgresql作为数据库,在另一台Centos上安装了Kettle当我大概知道如何使用后,我把使用kettle把我们一个Oracle业务数据库连上,通过脚本采集数据到Postgresql上面,后来在写SQL的过程中发现PG上的数据与Oracle上的数据在时间上有差异,刚好是差了8个小时,我直觉觉得这是一个由于时区没有设置好而导致的。于是我把Docker上的PG上时区设定了一下,配置后,又发现mebtabase上的时区也问题,于是我又配置一下metabase上的时区,接着发现Kettle上的机器也设置了一下时区,一切都搞好后,我就继续去写程脚本。
我的打算是每天凌晨的时候通过kettle去Oracle上抽到数据到PG上,在抽取数据时会对比PG上和Oracle上的时间戳去决定应该要同步多少数据。我在图型界面上把程序写好,并写了Bash脚本去做日处理,一切都正常。但就是当我使用Centos的CronTab去设定任务时,发现Kettle的程序就是跑不正常,我通过查找/var/log/cron文件看到Cron是能按设定启动的,同时我手工去启动写好的脚本,数据也是能正常同步的,但当两者结合起来时就出问题了,如果设定是每小时跑的程序,系统是会自己跑的,但当我定义一天凌晨1时、2时运行的程序,就不能正常启动,每天早上我查看程序时,都觉得十分的奇怪。无论我怎样调整脚本和算法都无法解决,我曾一度以为可能是Kettle的Bug或是PG的bug。直到某天的一个下午,因早上没有时间去检查数据有没有生成,但当我下午查时,发现数据居然生成了。现看了一下Bash生成的日志,居然发现是刚刚生成的,就是说原来设定是凌晨运行的脚本,居然到下午才执行。这难道又是时区的问题,后来我认真回想一下,发现原来我自安装好Kettle那台Centos后就一直没有重启过这台服务器,即便调整过时区同,也没重动过它。难道是Cron还是按旧时区的时钟在跑?于是我把机器重启一下,重启后,就一切正常了!
唉,这个问题足足搞了我四天时间去查错,真的是妥妥的智商税问题!!!
以后,安装完服务器后,第一时间就是设置好正确的时区。然后重启一次,要不然,就会有很多奇奇怪怪的事。
 

你可能感兴趣的:(linux)