Questo è un eseguibile di utilità che si prefigge lo scopo di monitorare, uccidere, e re-startare i processi che sono bloccati o in loop
Per i tecnici: leggere tutto con attenzione, quindi guardare il vademecum alla fine del documento per eseguire l'installazione.
Installazione e componenti
Il percorso sorgente dei file da copiare sulla installazione dei clienti è P:\delphi\process\Appl ; la cartella di destinazione lato cliente sarà normalmente c:\ecoge\schedula. I file da copiare sono i 3 elencati sotto (ossia schedula.exe, config.ini, lista.bat)
In un rilascio standard del gestionale, sotto la cartella "sys" dovrà essere presente una cartella "schedula" contenente:
•Schedula.exe: L'applicazione
•config.ini: il file di configurazione
•lista.bat: un file batch che permetterà di ottenere l'elenco dei processi da esaminare
Durante la prima esecuzione verrà creata anche una sottocartella "log" in cui saranno creati i file di log con la storia del funzionamento dell'applicazione.
Il file di configurazione
il contenuto del file di configurazione (config.ini) è strutturato come segue:
- Process-name=Test APOLLONIA - Clinica 1
- Nome-Immagine=wrun32.exe
- Secondi-Ctr-Fermo=60
- Secondi-Ctr-Loop=59
- %-CPU-Loop=15
- StartProcess="T:\apollonia\c04087 Clinica Gemona\post01\ecoge\run\thin\acuthin.exe"
- StartParams="T:\apollonia\c04087 Clinica Gemona\post01\ecoge\run\cloud_area.atc"
- AutoStart=Si
- Process-name=Test APOLLONIA - PdaLab
- Secondi-Ctr-Fermo=60
- Secondi-Ctr-Loop=60
- %-CPU-Loop=45
- StartProcess=
- StartParams=
- AutoStart=No
- Process-name=ACUCOBOL-GT Debugger
- Secondi-Ctr-Fermo=60
- Secondi-Ctr-Loop=60
- %-CPU-Loop=45
- StartProcess="T:\apollonia\c04087 Clinica Gemona\post01\ecoge\run\thin\acuthin.exe"
- StartParams="T:\apollonia\c04087 Clinica Gemona\post01\ecoge\run\cloud_area.atc"
- AutoStart=No
Comando-Tasklist=p:\delphi\process\lista.bat
Comando-Taskkill=c:\windows\system32\taskkill.exe
NomeLista=p:\delphi\process\lista.txt
Secondi-Timer=15
LogLevel=0
Nell'esempio qui sopra, vengono monitorati 3 processi distiniti; come si può vedere, per ogni processo da controllare si ripete una serie di parametri; dopodichè sono presenti alcuni parametri di configurazione generali.
Parametri generali
Comando-Tasklist=nome file
Corrisponde al percorso completo del nome del file batch "lista.bat", che dovrà contenere il comando "tasklist" con cui ottenere l'elenco dei processi.
NB: viene usato un file batch perchè è l'unico modo (per il momento) in cui sono riuscito a ridirigere l'output del comando su un file analizzabile.
Comando-Taskkill=nome file
Corrisponde al percorso completo del nome del comando"taskkill.exe", presente in ogni installazione di Windows.
Verrà usato per rimuovere i processi quando necessario.
NomeLista=nome file
Corrisponde al percorso completo del nome del file su cui viene rediretto l'output del comando "tasklist" (vedi "Lista.bat")
SecondiTimer=nn
L'applicazione eseguirà una scansione dei processi ogni "nn" secondi configurati.
LogLevel=nn
Il log dell'attività dell'applicazione potrà essere pilotato da questo parametro:
•0: log minimo
•....
•9: log massimo
Aumentare il livello di log può aiutare per comprendere il funzionamento, e a capire il nome del processo da controllare.
NB: attualmente sono previsti livelli di log da 0 a 4
StopOraInizio=hh:mi
StopOraFine=hh:mi
Se impostati, l'attività di Schedula sarà sospesa nell'intervallo di tempo indicato
Comando-Tasklist=c:\ecoge\schedula\lista.bat
Comando-Taskkill=c:\windows\system32\taskkill.exe
NomeLista=c:\ecoge\lista.txt
Secondi-Timer=15
LogLevel=0
Parametri per configurazione processo
- Process-name=nome processo
Il nome del processo da monitorare; deve corrispondere al nome mostrato quando si esegue il file lista.bat (vedere sotto)
Parametro obbligatorio e principale
NB:
•Se il primo carattere è "*", allora saranno considerati tutti i processi che iniziano con la stringa indicata.
- Nome-Immagine=nome immagine
Nome immagine da controllare
Nel caso in cui "Process-name" contenga un nome che è generico e non ben definito (in alcuni casi si osserva "N/D") permette di riconoscere il processo interessato
Controllo se il processo è fermo
- Secondi-Ctr-Fermo=nn
Il sistema controllerà un periodo di "nn" secondi; se in questo periodo il tempo CPU è rimasto invariato, si assume che il processo è bloccato e dovrà essere rimosso.
Generalmente va settato a 36000 (36000 secondi ossia 10 ore)
Controllo se il processo è in loop
- Secondi-Ctr-Loop=nn
- %-CPU-Loop=nn
Il sistema controllerà un periodo di "nn" secondi; se in questo periodo il tempo CPU impiegato per il processo supera la % configurata, si assume che il processo è in loop e dovrà essere rimosso.
Generalmente Secondi-Ctr-Loop vale 59, mentre %-CPU-Loop vale 70
Rilancio applicazione
- StartProcess=comando
- StartParams=parametri
Se questi parametri sono significativi, dopo aver rimosso il processo per uno dei due motivi (Processo fermo o in loop), verrà fatto ripartire usando i parametri qui configurati.
Generalmente altro non sono che il percorso, virgolettato da ", dell'eseguibile da lanciare e i parametri da appendere (senza virgolette). Qualora il programma da lanciare preveda una working dir (tipo quando si va a monitorare il wrun32.exe), va inserita negli StartParams. Es: StartProcess="C:\ecoge\....\wrun32.exe" , StartParams = -c c:\aaa\bbb\ccc\ parametri-vari
- AutoStart=Si/No
Se 'Si', l'applicazione verrà eseguita anche nel caso in cui non è presente tra i processi attivi (default = si)
Lista.bat
Esempio del contenuto:
c:\windows\system32\tasklist.exe /v /fo csv /fi "IMAGENAME eq acuthin.exe" > p:\delphi\process\lista.txt
dove:
•c:\windows\system32\tasklist.exe: percorso completo del comando "tasklist"
•/v /fo csv: opzioni comuni (output dettagliato, formato csv)
•/fi "IMAGENAME eq acuthin.exe": eventuale filtro sui processi: in questo caso ad esempio si selezionano solo i processi il cui nome immagine è "acuthin.exe"
•> p:\delphi\process\lista.txt: ridirezione dell'output sul file indicato (che dovrà essere configurato in "NomeLista", di solito va messo su c:\ecoge\schedula\lista.txt)
Maschera dell'applicazione
Configurazione
Lista che contiene l'elenco dei processi da monitorare
•Processo: il processo da monitorare
•Intervallo (sec): Intervallo in secondi su cui effettuare il controllo per "processo fermo"
•Intervallo (sec) x loop: Intervallo in secondi su cui effettuare il controllo per "processo in loop"
•% CPU: Percentuale che non deve essere raggiunta dal processo all'interno del periodo configurato
•Processo da eseguire: il comando da eseguire, se richiesto, per fare ripartire l'applicazione dopo essere stata chiusa forzatamente.
•Parametri: parametri di esecuzione del comando da eseguire
•Autostart: Indica se l'applicazione deve essere eseguita anche quando non è attiva
Parametri generali
In questa sezione sono mostrati alcuni parametri di configurazione generali
Processi
Lista che contiene l'elenco dei processi trovati che corrispondono ai processi da monitorare
•Id: il PID del processo
•Nome immagine: nome immagine del processo
•Titolo: nome del processo
Parametri per il controllo del processo fermo
•Time ctr: Ora di inizio dell'intervallo su cui viene analizzato il processo
•Cpu ctr: Tempo CPU all'inizio dell'intervallo su cui viene analizzato il processo
•Cpu att: Tempo CPU corrente
•Fermo: intervallo: durata attuale dell'intervallo analizzato
•Fermo: CPU: tempo utilizzato nell'intervallo attuale (NB: se durante l'intervallo questo tempo assume un valore <> 0, l'intervallo verrà azzerato e ricomincierà)
Parametri per il controllo del processo in loop
•Loop: tempo inizio: Ora di inizio dell'intervallo su cui viene analizzato il processo in loop
•Loop: CPU inizio: Tempo CPU utilizzato dal processo al momento di inizio dell'intervallo
•Loop: intervallo: Tempo trascorso nell'intervallo attuale
•Loop: CPU inizio: Tempo CPU utilizzato nell'intervallo attuale
Per i tecnici: vademecum minimo da seguire per la installazione
- Collegarsi col teamviewer al server del cliente su cui è necessario installare schedula.
- Creare la cartella c:\ecoge\schedula
- Col teamviewer, trasferire dentro a c:\ecoge\schedula i file schedula.exe, config.ini, lista.bat presenti in eurosystem sulla cartella \\sviluppo-centos\programmi\delphi\process\Appl
- Schedula serve a monitorare uno o più processi, pertanto bisogna guardare - o farsi dire - quale processo va monitorato; tipicamente è una istanza del thin client che serve a gestire alcune cose, e che prima della installazione di schedula viene lanciata a mano dal desktop. Guardando le proprietà del collegamento, potrete vedere quale esegibile va monitorato (es: acuthin.exe) e con quali parametri di lancio.
- Modificate il file c:\ecoge\schedula\lista.bat verificando che il processo listato (es: acuthin.exe) sia corretto (ossia quello da monitorare) e settare la ridirezione dopo il segno > a c:\ecoge\schedula\lista.txt
- Con il programma da monitorare in esecuzione, lanciate a mano lista.bat e guardate il file prodotto lista.txt; dovete vedere quale è il nome immagine, che di solito altro non è che il nome che c'è sulla finestra del thin client o del programma da monitorare (es: EUROSYSTEM2000 gestionale AREA)
- Modificare con cura il file config.ini sulla base di quanto elencato sopra; un piccolo esempio pratico per intenderci può essere questo:
- Process-name=AMBIENTE Ufficiale Eurosystem2000 - Linux server
- Secondi-Ctr-Fermo=36000
- Secondi-Ctr-Loop=59
- %-CPU-Loop=15
- StartProcess="K:\ecoge\run\thin\acuthin.exe"
- StartParams=es2000-centos:5632 ecoge-gui S100AAAAAAAAPC-CAVAZ
- AutoStart=Si
Comando-Tasklist=c:\ecoge\schedula\lista.bat
Comando-Taskkill=c:\windows\system32\taskkill.exe
NomeLista=c:\ecoge\schedula\lista.txt
Secondi-Timer=15
StopOraInizio=23:00:00
StopOraFine=05:00:00
Occhio al fatto che il parametro StarProcess richiede i doppi apici (") mentre il parametro Startarams no, ed attenzione ai 2 parametri finali, ossia StopOraInizio e StopOraFine; questi due parametri sono quelli relativi alla sospensione programmata, e si vedono nella finestra del processo da monitorare, se presenti. Se non ci sono, mettere 00:00:00 e 00:00:01, in modo che schedula di fatti si inattivi per un solo secondo. Il formato dell'orario richiede i due punti, altrimenti va in errore.
Fatto tutto, chiudere il processo da monitorare e lanciare schedula. Verificare che il programma attivi quanto necessario; provare a chiudere il processo lanciato e verificare che dopo il tempo settato (Es: 15 secondi) il processo venga rilanciato.
Verificato il corretto funzionamento, concludere inserendo schedula in esecuzione automatica su windows.