次のように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
または/etc/TIMEZONE
を読み取らない場合は、この行を/root/.bash_profile
に追加できます。
export TZ=GMT
source /root/.bash_profile
を実行してすぐに有効にし、再試行してください。
PDATE Thu Aug 30 10:55:54 ICT 2012
LogwatchPerlスクリプトでタイムゾーンを設定してみてください。
use Date::Manip;
Date_Init("TZ=GMT");
これは修正ではなく、回避策です。しかし、それはあなたを動かすはずです。
それが機能しなかった理由は TIMEZONE
が大文字になることを期待している です。
echo UTC > /etc/TIMEZONE