Linux
由於 Date::Manip 問題,無法執行 logwatch
我嘗試在以下位置執行 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.
實際上這有效
export DATE_MANIP=DM5
您目前的時區是 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
or/etc/TIMEZONE
,您可以將此行添加到/root/.bash_profile
:export TZ=GMT
通過執行使其立即生效,
source /root/.bash_profile
然後重試。更新 2012 年 8 月 30 日星期四 10:55:54 ICT
嘗試在 logwatch perl 腳本中設置時區:
use Date::Manip; Date_Init("TZ=GMT");