No outro dia, enquanto trabalhava em um problema nas instalações de um cliente, notei e por acaso mencionei que havia dois conjuntos de processos de aplicação em execução, um conjunto que funcionava sob algum nome genérico como Production.SysAdmin e um conjunto, que funcionava há mais de 3 anos, sob o nome de uma pessoa, o chamava de Fred.SysAdmin. Acontece que Fred havia deixado a empresa há algum tempo. Eu não estou dizendo que Fred tinha qualquer intenção maliciosa, mas ocorreu-me que uma "melhor prática" que é sempre mencionada é encerrar as credenciais de log-in de Fred imediatamente quando ele deixa a empresa, talvez mesmo antes de dizer-lhe que ele está deixando a empresa. Mas eu nunca ouvi nenhuma melhor prática sobre o encerramento de qualquer processo que Fred havia iniciado. Dado o período de tempo entre as reinicializações dos sistemas VOS, estou certo de que este cenário não é único. Sugiro que, além de encerrar suas credenciais de log-in quando alguém deixa a empresa, qualquer processo em execução sob o nome dessa pessoa ou execução de um módulo de programa criado por essa pessoa seja avaliado e então agendado para ser encerrado e, se considerado necessário, reiniciado por um funcionário atual. Da mesma forma, a fila de lotes deve ser revista e quaisquer solicitações em nome da pessoa devem ser avaliadas, canceladas e, se considerado necessário, reapresentadas por um funcionário existente.
Para verificar a fila de lotes você pode usar o comando
list_batch_requests -all -long
e procurar o nome de Fred como "usuário".
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#* |
Você pode usar o comando
analyze_system -request_line (string match fred (byte 3Bx) who) -quit
para identificar os processos em execução sob o nome de 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) |
A macro de comando seguinte pode ser usada para encontrar qualquer módulo de programa de execução criado por Fred independentemente do nome sob o qual o processo está sendo executado. A macro cria uma lista de todos os módulos de programa de execução e então faz um display_file_status para determinar quem criou o arquivo do módulo de programa e um display_program_module para determinar quem ligou o módulo de programa. Qualquer módulo de programa criado ou vinculado por alguém com um nome correspondente à cadeia de entrada é exibido junto com os processos de execução daquele módulo de programa. Ele também cria um relatório no diretório atual chamado wr_&NAME&.(data).out, onde &NAME& é o argumento dado à macro. Todos os nomes são traduzidos para minúsculas. Se nenhum nome for dado, ele exibe informações sobre cada módulo do programa de execução e o relatório é chamado wr.(date).out.
whos_running fred %phx_vos#m15_mas>SysAdmin>George>loop.pmLimitado por: Fred.SysAdmin Criado: George.SysAdmin loop.pm: O objeto é lido bloqueado por George.SysAdmin (loop) no módulo %phx_vos#m16 executing loop.pm.============================================================%phx_vos#m15_mas>Production>test>ftpd.pm Limitado por: Stcp_Install.Installer Criado: Fred.SysAdmin ftpd.pm: O objeto é lido bloqueado pela Production.SysAdmin (teste) no módulo %phx_vos#m16 executando ftpd.pm. pronto 09:05:22
|
& whos_running begins_here |