Temos alguns programas de linha de comando personalizados em nossa loja do Windows. Esses comandos estão programados para serem executados (a partir de arquivos bat) em intervalos regulares usando o Agendador de Tarefas. Nossas tarefas extraem dados de outros sistemas e embaralham informações em arquivos por meio de compartimentos usados para gerenciar nosso fluxo de trabalho. Às vezes, uma tarefa é executada por muito tempo - realmente muito tempo - e nos deixa imaginando se o aplicativo de console está realmente funcionando ou se está suspenso de alguma forma. (Esses aplicativos se comunicam pela rede com outros aplicativos.) De qualquer forma, estou me perguntando se há uma maneira de saber se o aplicativo está fazendo alguma coisa ou se está ocioso. É perigoso para o nosso processamento para matar tal tarefa no meio do caminho, mas nós temos que matar um processo se ele ficar pendurado para permitir outro trabalho. (Talvez um bloqueio de arquivo possa causar isso, não sei.)
Eu percebo que poderíamos adicionar logging aos nossos aplicativos individuais, mas espero encontrar uma solução que possa ser composta (canalizada) de alguma forma - por exemplo, talvez canalizando nosso STDIN / OUT por meio de outro aplicativo de console de monitoramento. Isso é razoável? Existe algo parecido com isso no Unix ou no Windows?
customcmd | monitor "progress.txt" --label customcmd < customdata.txt > result.txt 2> error.txt
E talvez o progress.txt
seja algo assim:
5:01:10pm - customcmd - 20 reads, 20 writes
5:01:15pm - customcmd - 11 reads, no writes