Ce service NT a été écrit dans le but de compléter ou remplacer le service "Planning" fourni par Microsoft et qui se programme via des commandes "AT". META-Schedule présente les améliorations suivantes (entre autres) :
cron
).WEBSERVER
permettant de contrôler les
temps utilisés par les différents processus (mini serveur WEB).
L'installation du service est effectuée soit à travers des commandes de création de
services telles que SC.EXE
(disponible dans le NT Ressource Kit de Microsoft)
ou, bien plus facilement, par le programme MSchedule.exe
lui-même.
Pour installer le programme, créer un répertoire spécifique puis tapez: mschedule
--install
dans une fenêtre DOS. Dans ce même répertoire doit impérativement se
trouver le fichier mschedule.ini
contenant les commandes à scheduler.
Pour installer plusieur instances du scheduler, tapez: mschedule --install
<file>
où <file>
est le fichier de configuration <file>.ini
qui se trouve dans le même répertoire que le fichier mschedule.exe
.
Note: Les fichiers de configurations doivent impérativement être placées dans le même répertoire que l'exécutable (et non dans le répertoire de Windows).
Permet de lancer une commande externe. La priorité spécifiée s'applique au programme
externe. Dans le cas d'une commande interne (DEL, TYPE...), utiliser l'interpréteur de
commande.
Si le programme dépasse son temps imparti pour s'exécuter, il sera détruit.
Les commandes externes autorisent l'utilisation des variables d'environnement %windir%
sera remplacé par le répertoire où se trouve Windows.
[Backup] CMD=Extern Program=PKZIP25 -add %windir%\*.* D:\win_nt.zip AT=10 1 * * 1-5
Permet de vérifier l'espace disque restant. Un message mail est envoyé dès que
l'espace disque tombe au-dessous des quotas spécifiés. Vous pouvez également vérifier
l'espace de disques distant à conditions que vous ayez les droits d'accès sur le disque.
Note: l'activation des quotas sur des machines Windows 2000 peut renvoyer des données erronnées par rapport à la réalité physique.
[EspaceDisque] CMD=DiskFree C:\=50M D:\=100M AT=0 * * * *
L'un des intérêts principal du programme de scheduling est de pouvoir démarrer et arrêter des services NT. Au démarrage du service de scheduling
Name
: nom du service.argx
: arguments de lancement si le service le nécessite (arg1
,
arg2
,...)PhysicalCheck
: une fois le service démarré ou arrêté lors du démarrage
du schduler, le programme de scheduling peut vérifier l'état physique du service soit se
baser sur son état précédent. Dans le cas où PhysicalCheck
est
positionné à TRUE
, si l'état du service est incorrect, il sera remis dans
l'état attendu (ce qui peut être gênant lors de commandes de maintenance).[SQLServer] CMD=Service NAME=W3Svc PhysicalCheck=TRUE AT=* * * * *
Cette commande vérifie la présence d'un fichier et si celui-ci est présent le
transfère par courrier électronique puis l'efface.
Si aucun fichier (item File
) n'est précisé, c'est le Dr WATSON (drwtsn32.log
dans le répertoire de Windows) qui est pris en compte. Cela permet d'être
automatiquement informé du plantage d'un programme.
[COREDUMP] CMD=ErrorFile AT=* * * * *
ou encore
[ERROR_TOTO] CMD=ErrorFile File=%windir%\toto.err AT=* * * * *
Cette commande effectue une copie de fichier. Le fichier source peut être sur un
serveur distant (HTTP, HTTPS ou FTP), ou alors un disque.
Si le fichier source comporte l'extension .gz
, celui-ci sera automatiquement
décompressé. Il est important de noter que le fichier est entièrement lu en mémoire
avant sa copie sur le disque local.
Cette fonctionnalité a été spécialement étudiée pour pré-calculer des pages ASP qui
seront mises à jour toutes les heures par exemple.
Note: les fichiers de sources et de destinations peuvent utiliser l'extension de variables.
[PAGE_GARDE] CMD=COPY Source=http://www.videotruc.com/ Dest=c:\inetpub\wwwroot\index_video.htm AT=1 * * * *
Cette commande vous permet d'activer un serveur WEB afin de contrôler l'activité du scheduler.
[Informations] CMD=WebServer Port=8088 AT=* * * * *
Cet exemple permet d'activer un serveur WEB 24h/24, 7j/7. Vous pouvez ainsi
contrôler le temps CPU de chacune des commandes ainsi que le temps réel
d'exécution.
Cette commande est disponible pour des tests internes. Elle tente de rebooter la machine (dans l'exemple ci-dessous, à minuit le 31 décembre, c'est à dire au début de chaque année!). Il est fort possible que des programmes recevant la notification de fin de session refusent de s'interrompre, dans ce cas la commande de REBOOT est inefficace.
[Securite]
CMD=REBOOT
AT=0 0 1 1 *
Permet de synchroniser l'horloge de votre machine à des serveurs de temps (via le
protocole NTP). Si aucun serveur n'est précisé, le scheduler choisira des serveurs parmi
une liste prédéfinie.
Pour une sécurité maximale, la synchronisation de votre serveur ne sera effectué que si
le décalage est supérieur à 1 seconde. De même, si le serveur renvoie un décalage
supérieur à 1 heure, aucune synchronisation n'est assurée. Pour optimiser la
sécurité, on utilise trois serveurs de temps et on vérifie que ceux-ci sont eux-même
synchronisés, ce qui permet d'assurer une sécurité optimale. Si vous ne précisez qu'un
ou deux serveurs, vous risquez d'obtenir de moins bons résultats.
Je vous conseille de synchroniser votre machine la nuit, vers 5 ou 6 heures du matin, une
fois les batchs terminés.
Il est vivement déconseillé de tenter une synchronisation à minuit à cause des
décalages horaires!
[TimeSync] CMD=TimeSync truechimer.waikato.ac.nz= ntp1.arnes.si= vtserf.cc.vt.edu= AT=10 5 * * *
Note: Cette commande n'est disponible que dans la version enregistrée.
L'expansion des variables suit la règle suivante, si la variable correspond à une variable d'environnement, celle-ci est automatiquement étendue, dans le cas contraire, il y a tentative de correspondance avec les variables suivantes:
DATE
: la date système sous la forme AAAAMMDD.TIME
: l'heure sous la forme HHMM.HOUR
: l'heure sous la forme HH (de 00 à 23).MINUTE
: la minute sous la forme MM (de 00 à 59).YEAR
: l'année sous la forme AAAA (avec le siècle).MONTH
: le mois de 01 à 12.DAY
: le jour (de 00 à 31).Notes:
Example: %WINDIR%\system32\toto.txt will be extended to "c:\winnt\system32\toto.txt".
Le service de scheduling est entièrement multithreadé, chaque commande est exécutée dans son propre thread avec la priorité qui lui a été attribuée.
L'horloge interne est utilisée comme support de chronométrage, cependant, pour
permettre un fonctionnement correct des commandes, si l'horloge système est avancée ou
reculée, le service va rattraper le retard ou ralentir son rythme afin de se recaler sur
l'horaire système. Cette technique assure que toutes les commandes seront correctement
effectuées.
Exemple: une commande de sauvegarde est schédulée tous les jours à 5h30. Un
administrateur système met à jour l'horloge de 5h25 à 5h32, la commande de sauvegarde
sera tout de même exécutée.
La section [Config]
permet de spécifier des options spécifiques au
programme. Entre autres, certaines informations par défaut:
_last
: cette information est automatiquement renseignée
par le service. Elle indique l'heure de dernier scan pour la vérification des commandes
à gérer. Pour que cette donnée soit mise à jour, il faut que le fichier de
configuration autorise l'écriture par le service.WriteHour
: si cette commande est active (=TRUE
),
alors l'heure prise au démarrage du service n'est pas celle du système mais celle
stockée dans le fichier de configuration (_last
). Cette solution permet de
prendre en compte les temps morts lors d'un redémarrage de la machine (Reboot). MailTo
: permet de spécifier l'adresse de courrier
électronique qui recevra les erreurs systèmes sur les commandes. Cette information par
défaut peut être modifiée pour chacune des commandes. Le système utilise MAPI pour
l'envoi des message.SMTP
: si vous specifiez un serveur de courrier, les messages
seront envoyés par une connection TCP directe plutôt que par MAPI32; ce qui est plus
efficace. Dans ce cas, you devez spécifier From
pour indiquer de nom de
l'expéditeur.
From
: Utilisé uniquement pour les connection via SMTP directement.
Vous donnez l'adresse de l'expéditeur (ex: William Rey <willsoft@free.fr>
).
Trace
: fichier de trace où les opérations du service sont détaillées. Vous pouvez
utiliser les extensions suivantes: %d
pour la date sous la forme AAAAMMJJ
.
L'extension .htm
ou .html
génère des logs au format HTML,
sinon le log est au format texte standard. Les fichiers de logs sont en anglais.
Exemple: | [CONFIG] TRACE=C:\LOGS\SHED-%d.log |
va générer des logs dans le répertoire logs, à raison d'un fichier par jour nommé:
SHED-20010508.log
pour le fichier du 8 mai 2001.
MailTime
: il s'agit du nombre de secondes entre deux
messages électronique en cas d'erreur. En effet, si une commande génère
systématiquement une erreur, le courrier électronique n'est envoyé qu'une seule fois
dans ce laps de temps. Par défaut, ce temps est fixé à vingt minutes. Exemple: vous
recevez un courrier signalant que l'espace disque est devenu insuffisant, le prochain
courrier vous sera envoyé vingt minutes plus tard, et ce même si vous vérifier l'espace
disque toutes les minutes.WaitForDone
: Attente
mbùkkè(ràzytbçtr(yoiytuyeuyeruyrçoreyzvoreyzrt RoundBeforeStop
: Nombre maximum d'attente pour la fin
d'exécution d'un programme ou d'un service lors de l'arrêt du service de scheduling.
Fixé à 8 par défaut. WaitAfter
: temps d'attente (en
secondes) avant de démarrer une nouvelle commande. Cela permet au système d'éviter des
pics trop importants d'utilisation de la CPU lors de création de threads lorsque
plusieurs commandes doivent être démarrées au même moment. Fixé à 0.77 secondes par
défaut. WaitAfterOnStart
: Même chose que WaitWAfter
mais concerne le démarrage des commandes lors du lancement du service. Fixé par défaut
à 1.8 secondes. Wait
: temps (en secondes) de mise en sommeil du thread
principal. Par défaut 17 secondes. Ce temps doit impérativement être compris entre 1 et
55 secondes. License
& Serial
: N° de
license et n° de série pour la version complète. Vous pouvez vérifier dans les
premières lignes du fichier de LOG si la licence est correcte.Pour chacune des sections précisant une commande, les items suivants sont utilisés quelque soit la commande:
AT
: Permet de déterminer l'horaire de lancement de la commande. Correspond strictement
à la définition utilisée dans les fichier crontab utilisée par Unix.
Les horaires sont formées de 5 valeurs séparées par des espaces, l'ordre est le suivant
MINUTES, HEURES, JOUR, MOIS, JOUR DE LA SEMAINE. L'étoile spécifie "tout le
temps". Exemples:
* * * * *
: 24h/24h toutes les minutes. * * * * 1-5
: en permanence du lundi au vendredi. Arrêt le weekend. 0 * * * *
: 1 fois par heure. 12 1 * * 1-5
: 1 fois par jour à 1h12 du matin, tous les jours du
lundi au vendredi.0 0 1 * *
: Tous les premiers du mois à 0h00.* * * 1-3 0
: En permanence le dimanche de janvier à mars.Start
: Heure de démarrage (sous la forme HH:MM). Remplace une commande ATEnd
: Heure d'arrêt (sous la forme HH:MM). Si l'heure d'arrêt est
inférieure à l'heure de démarrage, le système considère que le programme fonctionne
durant la nuit. Remplace une commande ATEvery
: Si la commande ne doit pas être exécutée toutes les minutes,
spéficie un autre intervalle (en minutes). Remplace une commande AT. Ignorée pour les
commandes de services NT.Priority
: Spécifie la priorité de la commande: IDLE
: la commande n'est exécutée que la si le CPU de la machine est
libre. VERYLOW
: priorité minimale LOW
: faible priorité NORMAL
: priorité normale (même priorité que tous les autres programmes).
Il s'agit de la priorité par défaut. HIGH
: priorité élevée. VERYHIGH
: priorité très élevée. REALTIME
: priorité absolue (déconseillée). MaxProcess
: Nombre maximal de process pour une même commande. Permet de
lancer une nouvelle fois la commande sans attendre que la commande précédente ne se soit
terminée. Par défaut, une seule exécution de la commande n'est possible simultanément.
OnStart
: Mettre "TRUE" si vous désirez que la commande soit
lancée au démarrage du service de scheduling (dans tous les cas). MailTo
: Adresse mail pour l'envoi d'un avertissement si la commande a
échouée.TimeOut
: Temps maximal pour l'exécution de la commande exprimée en
secondes. Par défaut, la commande n'a pas de temps maximal pour s'exécuter. Cette valeur
ne s'applique pas à toutes les commandes. Les améliorations prévues sont les suivantes (dans le désordre):
Si des améliorations particulières vous semblent intéressantes, n'hésitez-pas à nous en faire part.
Le service décrit ci-dessus est la version enregistrée du logiciel. La licence dite Freeware impose les limitations suivantes:
Pour toute question sur le service, veuillez contacter William REY à l'adresse suivante: winnix@mindless.com.