나는 이 질문과 답변을 읽었습니다.stderr를 stdout으로 리디렉션하지만 Ubuntu 16.04 LTS에서는 OpenMPI라는 소프트웨어로 버그를 잡을 수 있는 방법이 없는 것 같습니다.
쉘 스크립트에 OpenMPI 명령을 입력합니다.
mpirun -np 4 command
그런 다음 명령 프롬프트에 다음을 입력하십시오.
job_script >& logs
이는 응용 프로그램 소프트웨어 오류 및 출력을 캡처하지만 스크립트에서 발생한 OpenMPI 오류는 캡처하지 않습니다. OpenMPI 오류는 표준 오류로 전환되므로 지금 어떻게 잡아야 합니까?
답변1
이 >&
연산자는 표준 오류와 표준 출력을 동일한 대상으로 리디렉션합니다.표준 오류 리디렉션은 csh가 수행할 수 없는 가장 유명한 작업 중 하나입니다., 그래서 이렇게 하고 싶다면 대답이 불가능합니다. (물론 이것은 가능합니다. 그러나 예를 들어 다른 프로그램을 통해서만 가능합니다 sh
.) 그러나 stdout과 stderr을 리디렉션하고 >&
정확히 그렇게 하려고 합니다.
일부 출력이 내보내 지면 job_script >& logs
애플리케이션은 터미널에 직접 써야 합니다. 리디렉션으로는 잡을 수 없습니다. 이 script
명령을 사용하여 터미널 출력을 포함한 모든 것을 파일에 기록할 수 있습니다.
script -c 'job_script' logs >/dev/null
그러고보니 2017년이네요. (t)csh가 대화형 사용에서 bash보다 우위를 점한 지 약 15년이 지났고, zsh보다 약 25년 전이며 csh는 스크립팅에 능숙한 적이 없습니다. 이제 은퇴할 시간입니다.
답변2
stdout/stderr 스트림을 분리하려면 명령줄에서 cshell
다음을 수행하십시오 .
( job_script > stdout.log ) >& stderr.log