명령 행 프로그램의 진행 상태를 어떻게 모니터합니까?


1

Windows Shop에는 커스텀 커맨드 라인 프로그램이 있습니다. 이러한 명령은 작업 스케줄러를 사용하여 규칙적인 간격으로 실행되도록 예약됩니다 (bat 파일 내에서 실행). 우리의 작업은 다른 시스템의 데이터를 가져 와서 작업 흐름을 관리하는 데 사용되는 빈을 통해 파일의 정보를 이동시킵니다. 가끔 태스크가 오래 실행되는 경우가 있습니다. 콘솔 앱이 실제로 작동하는지 또는 어떻게 든 매달려 있는지 궁금해합니다. (이 응용 프로그램은 네트워크를 통해 다른 응용 프로그램과 통신합니다.) 여하튼, 응용 프로그램이 작동하는지 또는 유휴 상태인지 여부를 알 수있는 방법이 있는지 궁금합니다. 이러한 작업을 중류에 놓는 것이 우리의 처리에 위험합니다.하지만 다른 작업을 허용하기 위해 걸려있는 경우에는 프로세스를 죽여야합니다. (아마도 파일 잠금이 원인이 될 수 있습니다.)

개별 앱에 로깅을 추가 할 수 있다는 것을 알았지 만, 어떻게 든 구성 할 수있는 솔루션을 찾고 싶습니다. 예를 들어 다른 모니터링 콘솔 앱을 통해 STDIN / OUT을 전달할 수 있습니다. 이게 합리적입니까? 유닉스 나 윈도우에서 이런게 있나요?

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

어쨌거나 STDIN / STDOUT을 파이핑하는 중이라면 파일을 직접 파일로 파이프하지 않는 이유는 무엇입니까? 그리고 (예를 들어 리눅스에서) tail -f file1 -f file2 -f file 3 동일한 창에서 3 개의 파일을 모두 추적합니다. 유닉스 패키지 (아마 Cygwin에서도 동작한다)가있다. multitail 각 로그마다 창을 나눕니다. 또는 로그를 수집하고 처리하는 프로그램을 작성할 수 있습니다.
Peon

귀하의 정의에 "매달린"것은 무엇입니까? 실제로 실행중인 것은 무엇입니까? Cmd / PowerShell / bash / 귀하의 응용 프로그램? 솔루션은 다를 수 있습니다 ...
Maximus

이 문제에 대한 해결책을 찾았습니까?
EJoshuaS

그 과정은 은퇴 했으므로 아무런 문제가 없습니다. 그러나 하나의 쉬운 솔루션은 Windows 이벤트 로그와 같은 로그에 기록하는 것이고 다른 프로세스에 대해서는이 작업을 수행합니다. 필요한 경우 PowerShell을 통해 이벤트를 스트리밍 할 수 있습니다.
Mario

PowerShell은 여기서 작동 할 수있는 진행률 표시 줄을 표시하는 메커니즘을 제공합니다.
Mario
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.