forum.Ordonnancement.org

Accueil|Aide|Rechercher|Calendrier|Identifiez-vous|Inscrivez-vous
Juillet 30, 2010, 02:30:58 *
Bienvenue, Invité. Veuillez vous connecter ou vous inscrire.

Connexion avec identifiant, mot de passe et durée de la session
 
Pages: [1]
  Imprimer  
Auteur Fil de discussion: Question sur les Timezones  (Lu 709 fois)
0 Membres et 1 Invité sur ce fil de discussion.
fredbastiani
Full Member
***

Crédible: +0/-0
Messages: 27


Je vous surveille!

Mon profil LinkedIn fredbastiani@hotmail.com
Voir le profil WWW Courriel
« le: Janvier 21, 2010, 03:08:33 »

Bonjour,

Je suis pinpin sur la question mais pas sur le produit et je me pose la question sur le fonctionnement des timezones.
Serait il possible d'avoir un peu plus d'information sur le sujet?
Merci d'avance.

Fred
Journalisée
Eric
Consultant en ordonnancement
Administrator
Hero Member
*****

Crédible: +11/-1
Messages: 577

Mon profil LinkedIn
Voir le profil WWW Courriel
« Répondre #1 le: Janvier 22, 2010, 09:29:21 »

Bonjour Pinpin,

Le champ Timezone d'Autosys peut aussi bien contenir un timezone système qu'un timezone purement applicatif fourni par le produit.
  • le TZ systeme
    avantage : on se repose sur le zoneinfo qui est partagé par l'ensemble des utilisateurs du monde sur unix et java (qui dispose aussi de son propre zoneinfo). En cas de changement il faut recompiler le source au niveau système (ou plus généralement patcher la machine).
    inconvénient : pas terrible avec un serveur windows qui dispose, évidemment, d'un autre systeme. Il faut scrupuleusement respecter le format et la casse.
  • l'autotimezone
    avantage : c'est lié à l'application et donc entièrement dans notre périmètre, en cas de changement d'heure d'été il faudrait le changer soi-même (faut connaître la norme posix mais c'est assez simple).
    inconvénient : il faut se tenir au courant des changements car ce n'est pas CA qui le fera, j'avais testé ce qui était installé en 4.5.1 et c'est plus d'un dizaine de fuseaux qui était faux. Pour les migrations, il ne faut surtout pas oublier cette partie.

Au moment de la définition, quelle est la meilleure solution ? Les 2 sont bonnnes mais je conseille fortement de ne pas les mélanger car le risque est de finalement disposer de 2 bases fausses.

Si c'est déjà défini, comment reconnaître le type de timezone ? Si le serveur est sur windows, le timezone est obligatoirement celui d'autosys. Par contre, si il est sur Unix, on peut le tester grace à la variable d'environnement TZ.

Je vais sur mon système et j'initialise le TZ, puis j'affiche la date. Imaginons que la définition du job utilise le fuseau horaire "NewYork", je teste cette valeur :
Code:
TZ=NewYork;date
On obtient :
Code:
Fri Jan 22 07:54:46 GMT 2010

L'indication "GMT" signifie que le système utilise l'heure universelle, le fuseau horaire n'est donc pas reconnu.

On va donc faire une recherche dans la base de données d'Autosys en utilisant autotimezone.

Code:
autotimezone -l | grep -i newyork
NewYork                                            City     US/Eastern

Ce n'est pas un timezone mais une simple ville qui est relié à US/Eastern, on rebondit sur cette info :
Code:
autotimezone -l | grep -i 'US/Eastern'
Atlanta                                            City     US/Eastern
Boston                                             City     US/Eastern
Detroit                                            City     US/Eastern
EasternTime                                        Alias    US/Eastern
Miami                                              City     US/Eastern
NewYork                                            City     US/Eastern
US/Eastern                                         Zone     EST5EDT
WashingtonDC                                       City     US/Eastern

On voit que différentes villes sont rattachées a US/Eastern et que US/Eastern est une zone, on peut ce fuseau comme TZ:
Code:
TZ=US/Eastern;date
Fri Jan 22 02:58:41 EST 2010

On peut éventuellement rebondir sur EST5EDT qui est le format Posix (format antérieur au zoneinfo) :
Code:
autotimezone -l | grep -i 'EST5EDT'
America/Nassau                                     Zone     EST5EDT
Canada/Eastern                                     Zone     EST5EDT
EST5EDT                                            Zone     EST5EDT
US/Eastern                                         Zone     EST5EDT

Comment trouver le timezone systeme ? c'est plus compliqué, mais heureusement on a le man :
Code:
man zoneinfo
File Formats                                          zoneinfo(4)

NAME
     zoneinfo - timezone information

DESCRIPTION
     For   notes   regarding   the   zoneinfo   timezones,    see
     /usr/share/lib/zoneinfo/src/README.

SunOS 5.10          Last change: 21 Jun 1999                    1

C'est sommaire mais suffisant car on a directement le répertoire des sources, qui sont, comme tout source, des fichiers textes qui seront compilés :
Code:
ls -rtl  /usr/share/lib/zoneinfo/src
total 1042
-rw-r--r--   1 root     bin       109669 Jul 16  2008 northamerica
-rw-r--r--   1 root     bin          350 Jul 16  2008 factory
-rw-r--r--   1 root     bin       108288 Jul 16  2008 europe
-rw-r--r--   1 root     bin         2961 Jul 16  2008 etcetera
-rw-r--r--   1 root     bin        57734 Jul 16  2008 australasia
-rw-r--r--   1 root     bin        82082 Jul 16  2008 asia
-rw-r--r--   1 root     bin        12533 Jul 16  2008 antarctica
-rw-r--r--   1 root     bin        26456 Jul 16  2008 africa
-rw-r--r--   1 root     bin         1503 Jul 16  2008 systemv
-rw-r--r--   1 root     bin        53772 Jul 16  2008 southamerica
-rw-r--r--   1 root     bin        19557 Jul 16  2008 solar89
-rw-r--r--   1 root     bin        19281 Jul 16  2008 solar88
-rw-r--r--   1 root     bin        19263 Jul 16  2008 solar87
-rw-r--r--   1 root     bin         1153 Jul 16  2008 pacificnew
-rw-r--r--   1 root     bin         4016 Jul 16  2008 backward
-rw-r--r--   1 root     bin         2947 Jul 16  2008 README

Un petit grep comme pour l'autotimezone :
Code:
grep -i new /usr/share/lib/zoneinfo/src/* | grep -i york
/usr/share/lib/zoneinfo/src/australasia:# Howse writes (p 153, citing p 10 of the 1883-11-18 New York Herald)
/usr/share/lib/zoneinfo/src/backward:Link       America/New_York         US/Eastern
/usr/share/lib/zoneinfo/src/europe:# A source at the British Information Office in New York avers that it's
/usr/share/lib/zoneinfo/src/northamerica:# in New York City (1869-10).  His 1870 proposal was based on Washington, DC,
/usr/share/lib/zoneinfo/src/northamerica:# Any announcement from Asia would reach St. John's New York newsroom on a
/usr/share/lib/zoneinfo/src/northamerica:# USA  EASTERN       5 H  BEHIND UTC    NEW YORK, WASHINGTON
/usr/share/lib/zoneinfo/src/northamerica:# US eastern time, represented by New York
/usr/share/lib/zoneinfo/src/northamerica:# New Hampshire, New Jersey, New York, North Carolina, Ohio,
/usr/share/lib/zoneinfo/src/northamerica:Zone America/New_York  -4:56:02 -      LMT     1883 Nov 18 12:03:58
/usr/share/lib/zoneinfo/src/northamerica:# - Dearborn and Ohio counties have been like America/New_York.
/usr/share/lib/zoneinfo/src/southamerica:#      -- E O Cutler, _New York Times_ (1937-02-14), quoted in

On retrouve ce qu'indiquait l'autotimezone, à savoir que New-York est lié à la timezone US/Eastern. Le fichier est backward, ce qui signifie que ce sont des liens d'anciens noms vers les nouveaux (à moins que NewYork réclame son indépendance, US/Eastern suffit très largement et son petit nom est EST comme on le voit dans le résultat de date).

Code:
TZ=America/New_York;date
Fri Jan 22 03:02:53 EST  2010

Revenons à la partie autosys et à son format Posix, on va tester Paris pour voir le format de l'heure d'été :

Code:
autotimezone -l | grep -i paris 
Europe/Paris                                       Alias    MET
Paris                                              City     Europe/Paris

Puis :
Code:
autotimezone -l | grep -i MET
Amsterdam                                          City     MET
Bern                                               City     MET
Budapest                                           City     MET
CentralEurope-West                                 Zone     MET-1METDST,M3.5.0/01:00:00,M9.5.0
Europe/Berlin                                      Alias    MET
Europe/Brussels                                    Alias    MET
Europe/Lisbon                                      Alias    MET
Europe/Madrid                                      Alias    MET
Europe/Paris                                       Alias    MET
Europe/Prague                                      Alias    MET
Europe/Rome                                        Alias    MET
Europe/Stockholm                                   Alias    MET
Europe/Vienna                                      Alias    MET
Europe/Zurich                                      Alias    MET
MET                                                Zone     MET-1METDST,M3.5.0,M10.5.0/03:00:00

MET est le fuseau pour Paris, le changement d'heure se fait le cinquième (5) dimanche (0) de mars (3) et se termine le dernier dimanche de d'Octobre a 3h. Pour un changement, c'est ce type de syntaxe qu'il faudra utiliser dans l'autotimezone.

J'espère avoir été assez exhaustif sur ce sujet. N'hésitez pas à commenter, on arrive bientôt à l'heure d'été et le sujet est moins simple qu'il n'y parait.

Eric.
Journalisée

L'ordonnancement est au coeur de la production.
http://ordonnancement.org
fredbastiani
Full Member
***

Crédible: +0/-0
Messages: 27


Je vous surveille!

Mon profil LinkedIn fredbastiani@hotmail.com
Voir le profil WWW Courriel
« Répondre #2 le: Février 04, 2010, 11:59:02 »

Merci pour ta réponse. Clin d'oeil
Journalisée
Pages: [1]
  Imprimer  
 
Aller à:  

Propulsé par MySQL Propulsé par PHP Powered by SMF 1.1.11 | SMF © 2006-2007, Simple Machines LLC XHTML 1.0 Transitionnel valide ! CSS valide !