web-dev-qa-db-ja.com

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.
5
Quintin Par

実際に これはうまくいきました

export DATE_MANIP=DM5
2
Quintin Par

現在のタイムゾーンは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");
4
quanta

これは修正ではなく、回避策です。しかし、それはあなたを動かすはずです。

それが機能しなかった理由は TIMEZONEが大文字になることを期待している です。

echo UTC > /etc/TIMEZONE
1
Michael Hampton