最近在centos6.9系統(tǒng)遇到個定時任務(crontab)和系統(tǒng)日志時間與系統(tǒng)時間不一致的問題渡讼;
問題描述
在查看現(xiàn)網(wǎng)數(shù)據(jù)庫備份文件是發(fā)現(xiàn)冗澈,備份文件的生成時間與備份腳本中date命令的時間不一致矢棚,腳本在crontab執(zhí)行時夭苗,date命令輸出的時間比系統(tǒng)時間完了8小時。
如圖:文件的生成時間為2018-12-21 02:12慕匠,但是壓縮包的時間為2018-12-20
備份腳本中壓縮命令為:tar?czf?./gw_data_center_`date?'+%m-%d-%Y_%H-%M-%S'`.sql.tar.gz?./gw_data_center.sql?
查看本地時間查看問題
寫個簡單腳本(testDate.sh)
[root@lypt-storage1 zhufei]# cat testDate.sh
#!/bin/bash
echo `date -R` >> 2.log
export TZ='Asia/Shanghai'
echo "`date '+%m-%d-%Y_%H-%M-%S'`" >> 1.log
測試時間腳本在crontab中執(zhí)行,發(fā)現(xiàn)在crontab執(zhí)行下結(jié)果為
[root@lypt-storage1?zhufei]#?cat?2.log
Wed,?26?Dec?2018?05:51:01?+0000
直接在控制臺執(zhí)行
[root@lypt-storage1?zhufei]# date -R
Wed,?26?Dec?2018 13:51:01?+0800
可以看到手動執(zhí)行的結(jié)果時間正常阅仔,但是crontab執(zhí)行date的結(jié)果晚了8小時吹散。
問題升級
重啟crond、rsyslog后八酒,crontab任務不能按照時間點執(zhí)行空民,且系統(tǒng)日志時間也晚了8小時。
問題解決
在執(zhí)行cp?/usr/share/zoneinfo/Asia/Shanghai?/etc/localtime羞迷、export TZ='Asia/Shanghai'之后問題都未能解決界轩。
回到剛才的testDate.sh腳本,發(fā)現(xiàn)在export TZ='Asia/Shanghai'后date -R的執(zhí)行結(jié)果時間與系統(tǒng)時間一致衔瓮,且時區(qū)變?yōu)榱藮|八區(qū)浊猾。
那么,在/etc/init.d/crond和/etc/init.d/rsyslog中加入export TZ='Asia/Shanghai'后能否成功呢热鞍?
結(jié)果:加入后重啟crond和rsyslog葫慎,問題得到了解決。
疑問
其實薇宠,問題得到了解決偷办,但是本質(zhì)并沒有得到解決:
1)、明明在~/.bashrc和/etc/profile中都已經(jīng)配置了export TZ='Asia/Shanghai'澄港,為什么沒有生效椒涯?
2)、hwclock --showtime與系統(tǒng)時間一致慢睡, hwclock --showtime(硬件真正時間)也比系統(tǒng)時間滿了8小時逐工,難道crontab和rsyslog是取得硬件時間铡溪?------->通過其他主機查看漂辐,取得并不是硬件時間。
3)棕硫、難道是centos6.9的影響髓涯?可能這個原因影響比較大
總結(jié):通過/etc/init.d/server_name來定義環(huán)境變量是之后解決單獨問題的一個方法。