Как вы контролируете прогресс программы командной строки?

У нас есть несколько пользовательских программ командной строки в нашем магазине Windows. Эти команды планируется выполнять (из файлов bat) через регулярные промежутки времени с помощью планировщика заданий. Наши задачи извлекают данные из других систем и перетасовывают информацию в файлах через корзины, используемые для управления нашим рабочим процессом. Иногда задача выполняется долго - действительно долго - и это заставляет нас задуматься, действительно ли консольное приложение выполняет работу или оно как-то зависло. (Эти приложения взаимодействуют по сети с другими приложениями.) Во всяком случае, мне интересно, есть ли способ узнать, что приложение делает что-то или оно бездействует. Для нашей обработки опасно убивать такую ​​задачу в среднем потоке, но мы должны убить процесс, если он просто останется зависшим, чтобы позволить другой работе пройти. (Может быть, блокировка файла может вызвать это, я не знаю.)

Я понимаю, что мы могли бы добавить ведение журнала в наши отдельные приложения, но я надеюсь найти решение, которое можно каким-либо образом составить (передать), например, путем передачи нашего STDIN/OUT через другое приложение консоли мониторинга. Это разумно? Есть ли что-то подобное в Unix или Windows?

customcmd | monitor "progress.txt" --label customcmd < customdata.txt > result.txt 2> error.txt

И, возможно, progress.txt выглядит примерно так:

5:01:10pm - customcmd - 20 reads, 20 writes
5:01:15pm - customcmd - 11 reads, no writes

0 ответов

Другие вопросы по тегам