L'altro giorno, mentre lavoravo ad un problema presso un cliente, ho notato e mi è capitato di menzionare che c'erano due serie di processi applicativi in esecuzione, una serie in esecuzione sotto qualche nome generico come Production.SysAdmin e una serie, che era in esecuzione da oltre 3 anni, sotto il nome di una persona, lo chiamano Fred.SysAdmin. Si è scoperto che Fred aveva lasciato l'azienda da un po' di tempo. Non sto dicendo che Fred avesse un intento maligno, ma mi è venuto in mente che una "best practice" che viene sempre menzionata è quella di interrompere immediatamente le credenziali di accesso di Fred quando lascia l'azienda, magari proprio prima di dirgli che sta lasciando l'azienda. Ma non ho mai sentito una "best practice" che preveda la cessazione di qualsiasi processo avviato da Fred. Dato il tempo che intercorre tra un riavvio e l'altro dei sistemi VOS, sono sicuro che questo scenario non è unico. Suggerisco che, oltre a terminare le credenziali di accesso quando qualcuno lascia l'azienda, qualsiasi processo in corso a nome di quella persona o l'esecuzione di un modulo di programma creato da quella persona venga valutato e poi programmato per la cessazione e, se ritenuto necessario, riavviato da un dipendente in servizio. Allo stesso modo, la coda batch deve essere rivista e qualsiasi richiesta a nome della persona deve essere valutata, cancellata e, se ritenuto necessario, ripresentata da un dipendente esistente.
Per controllare la coda batch è possibile utilizzare il comando
list_batch_richieste_list_batch -tutto -lungo
e cercare il nome di Fred come "utente".
Request: 59 User: Fred.SysAdmin Time queued: 10-08-11 05:00:02 edt Deferred until: 10-08-12 05:00:00 edt Attributes: waiting, not privileged, cannot restart Process priority: 5 Queue priority: 4 Process name: test Command: test.cm Output path: %system#m16_mas>SysAdmin>Fred>test.out Home dir: %system#m16_mas>SysAdmin>Fred Notify users: Fred.* on %system#* |
È possibile utilizzare il comando
analyze_system -request_line (la stringa corrisponde a fred (byte 3Bx) che) -quit
per identificare i processi che girano sotto il nome di Fred.
analyze_system -request_line (string match fred (byte 3Bx) who) -quit OpenVOS Release 17.0.2ah, analyze_system Release 17.0.2ah Current process is 182, ptep 958C5000, Noah_Davids.CAC * 162 958C5000 551080B6 Fred.SysAdmin (testing) |
La seguente macro di comando può essere utilizzata per trovare qualsiasi modulo di programma in esecuzione creato da Fred, indipendentemente dal nome con cui il processo è in esecuzione. La macro crea una lista di tutti i moduli di programma in esecuzione, poi fa un display_file_status per determinare chi ha creato il file del modulo di programma e un display_program_module per determinare chi ha legato il modulo di programma. Qualsiasi modulo di programma creato o vincolato da qualcuno con un nome corrispondente alla stringa di input viene visualizzato insieme ai processi in esecuzione di quel modulo di programma. Inoltre crea un report nella directory corrente chiamato wr_&NAME&.(date).out, dove &NAME& è l'argomento dato alla macro. Tutti i nomi sono tradotti in minuscolo. Se non viene dato alcun nome, visualizza le informazioni su ogni modulo di programma in esecuzione e il report si chiama wr.(date).out.
whos_running fred %phx_vos#m15_mas>SysAdmin>George>loop.pmLegato da: Fred.SysAdmin Creato: George.SysAdmin loop.pm: L'oggetto viene letto bloccato da George.SysAdmin (loop) sul modulo %phx_vos#m16 executing loop.pm.============================================================%phx_vos#m15_mas>Production>test>ftpd.pm Legato da: Stcp_Install.Installer Creato: Fred.SysAdmin ftpd.pm: L'oggetto viene letto bloccato da Production.SysAdmin (test) sul modulo %phx_vos#m16 che esegue ftpd.pm. pronto 09:05:22
|
& whos_running begins_here |