nohup 명령에서 IO 오류를 생성하는 프로그램 이름을 LOG로 리디렉션하는 방법은 무엇입니까?

nohup 명령에서 IO 오류를 생성하는 프로그램 이름을 LOG로 리디렉션하는 방법은 무엇입니까?

백그라운드에서 다른 프로그램을 실행하는 프로그램이 있습니다. 주 프로그램은 programA이고, 주 프로그램에 의해 실행되는 프로그램은 program1a, program1b, program1c입니다.

쉘 연결이 끊어졌는지 여부에 관계없이 계속 실행하려면 프로그램이 필요하므로 이 nohup명령을 사용합니다.

그러나 각 프로그램에는 아래와 같이 자체 로그 파일이 있습니다.

프로그램 A --> logfileA.txt
프로그램 1a --> logfile1a.txt
프로그램 1b --> logfile1b.txt
프로그램 1c -->logfile1c.txt

하위 프로그램 중 하나에서 오류가 발생하면 오류 메시지가 주 프로그램에 해당하는 LOG 파일에 표시됩니다.

예:

  1. 프로그램 A는 다른 루틴에서 호출됩니다. -

    nohup nice -10 programA 2>&1 > logfileA.txt
    
  2. ProgramA 내부에서는 3개의 다른 프로그램을 호출합니다. -

    nohup nice -10 program1a 2>&1 > logfile1a.txt
    nohup nice -10 program1b 2>&1 > logfile1b.txt
    nohup nice -10 program1c 2>&1 > logfile1c.txt
    

오류가 발생하면 또는 또는 logfileA.txt대신에 오류 가 나타납니다 .logfile1a.txtlogfile1b.txtlogfile1c.txt

기본 프로그램의 로그 파일에 표시된 오류를 생성한 프로그램을 어떻게 알 수 있나요?

답변1

리디렉션 순서를 바꿔야 할 수도 있습니다.

nohup nice -10 program1a  > logfile1a.txt 2>&1
nohup nice -10 program1b  > logfile1b.txt 2>&1
nohup nice -10 program1c  > logfile1c.txt 2>&1

"fd 1에서 fd 2 복사"를 의미합니다 2>&1. 이는 제공된 예에서 "">"를 통해 fd 1이 리디렉션되기 전에 발생합니다.

또한보십시오:STDERR이 이런 방식으로 /dev/null로 리디렉션되는 이유는 무엇입니까?

관련 정보