我试着按照以下方式运行logwatch
[root@machine cron.daily]# ./0logwatch ERROR: Date::Manip unable to determine TimeZone. Execute the following command in a shell prompt: perldoc Date::Manip The section titled TIMEZONES describes valid TimeZones and where they can be defined.
我的约会日期如下
root@machine cron.daily]# date Thu Aug 23 06:25:21 GMT 2012
现在基于各种论坛的细节,我试图通过设置来解决这个问题
/etc/timezone to “+0800”
但它不起作用
我的/ etc / localtime指向/usr/share / zoneinfo / GMT,由puppet管理
我该如何解决这个问题?我仍然希望我的所有机器都在GMT时区.
编辑:
可悲的是,
这两个更改都不起作用:
[root@machine cron.daily]# cat /etc/TIMEZONE UTC
广达
[root@machine cron.daily]# cat ~/.bash_profile # .bash_profile # Get the aliases and functions if [ -f ~/.bashrc ]; then . ~/.bashrc fi # User specific environment and startup programs PATH=$PATH:$HOME/bin export TZ=GMT export PATH [root@machine cron.daily]# source ~/.bash_profile [root@machine cron.daily]# ./0logwatch ERROR: Date::Manip unable to determine TimeZone. Execute the following command in a shell prompt: perldoc Date::Manip The section titled TIMEZONES describes valid TimeZones and where they can be defined.
解决方法
您当前的时区是GMT,为什么将/ etc / timezone设置为“0800”?
perldoc Date :: Manip
The following time zone names are currently understood (and can be used in parsing dates). These are zones defined in RFC 822. Universal: GMT,UT US zones : EST,EDT,CST,CDT,MST,MDT,PST,PDT Military : A to Z (except J) Other : +HHMM or -HHMM ISO 8601 : +HH:MM,+HH,-HH:MM,-HH In addition,the following time zone abbreviations are also accepted. These do not come from a standard,but were included in prevIoUs releases of Date::Manip 5.xx and are preserved here for backward compatibility: IDLW -1200 International Date Line West NT -1100 Nome SAT -0400 Chile CLDT -0300 Chile Daylight AT -0200 Azores MEWT +0100 Middle European Winter MEZ +0100 Middle European FWT +0100 French Winter GB +0100 GMT with daylight savings SWT +0100 Swedish Winter MESZ +0200 Middle European Summer FST +0200 French Summer METDST +0200 An alias for MEST used by HP-UX EETDST +0300 An alias for eest used by HP-UX EETEDT +0300 Eastern Europe,USSR Zone 1 BT +0300 Baghdad,USSR Zone 2 IT +0330 Iran ZP4 +0400 USSR Zone 3 ZP5 +0500 USSR Zone 4 IST +0530 Indian Standard ZP6 +0600 USSR Zone 5 AWST +0800 Australian Western Standard ROK +0900 Republic of Korea AEST +1000 Australian Eastern Standard ACDT +1030 Australian Central Daylight CADT +1030 Central Australian Daylight AEDT +1100 Australian Eastern Daylight EADT +1100 Eastern Australian Daylight NZT +1200 New Zealand IDLE +1200 International Date Line East All other time zone abbreviations come from the standards. In many cases,an abbreviation may be used for multiple timezones. For example,NST stands for Newfoundland Standard -0330 and North Sumatra +0630. In these cases,only 1 of the two is available. I have tried to use the most recent definition,and of those (if multiple timezones use the abbreviation),the most commonly used. I don’t claim that I’m correct in all cases,but I’ve done the best I could. The list of abbreviations available is documented in the Date::Manip::DM5abbrevs document in this module,or more fully in the Date::Manip::Zones document of Date::Manip::6.xx. Date::Manip must be able to determine the time zone the user is in. It does this by looking in the following places: $Date::Manip::TZ (set with Date_Init or in Manip.pm) $ENV{TZ} the Unix ‘date‘ command (if available) $main::TZ /etc/TIMEZONE /etc/timezone At least one of these should contain a time zone in one of the supported forms. If none do by default,the TZ variable must be set with Date_Init. The time zone may be in the STD#DST format (in which case both abbreviations must be in the table above) or any of the formats described above. The STD#DST format is NOT available when parsing a date however. The following forms are also available and are treated similar to the STD#DST forms: US/Pacific US/Mountain US/Central US/Eastern Canada/Pacific Canada/Mountain Canada/Central Canada/Eastern
您正在运行哪个Date :: Manip版本?
如果由于某些原因,Perl不读取/ etc / timezone或/ etc / TIMEZONE,则可以将此行添加到/root/.bash_profile中:
export TZ=GMT
通过运行源/root/.bash_profile使其立即生效,然后重试.
更新时间:8月30日星期四10:55:54 ICT 2012
尝试在logwatch perl脚本中设置时区:
use Date::Manip; Date_Init("TZ=GMT");