В нашем магазине 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