Linux에서 .sh 파일을 실행할 때 백그라운드에서 무슨 일이 일어나고 있는지 어떻게 확인할 수 있나요? [폐쇄]

Linux에서 .sh 파일을 실행할 때 백그라운드에서 무슨 일이 일어나고 있는지 어떻게 확인할 수 있나요? [폐쇄]

나는 한 가지 방법을 알고 있습니다 ./filename.sh > log.txt. 그러나 를 사용하여 파일을 실행하면 로그 파일에는 콘솔에 표시된 내용이 포함됩니다 ./filename.sh.

백그라운드 프로세스는 로그 파일에 표시되지 않습니다. "백그라운드 프로세스"란 컴파일러가 각 행을 평가하는 방법을 의미합니다("디버깅"이 적절한 단어인 것 같습니다).

이 백그라운드 프로세스를 로그 파일에 어떻게 넣을 수 있나요?

답변1

귀하의 의견을 토대로:

.sh 파일을 실행할 때 bash가 쉘 스크립트의 각 줄을 어떻게 실행하는지 알고 싶습니다.

bash를 사용하는 경우 찾고 있는 것은 다음과 같습니다.

bash -x ./filename.sh

또는

bash -x ./filename.sh > log.txt

또는 다음을 추가할 수 있습니다.

set -x

콘텐츠 filename.sh.

답변2

스크립트 상단(Shebang 뒤)에 다음 줄을 추가합니다.

exec >/path/to/log.txt

스크립트의 STDOUT을 로 리디렉션합니다 /path/to/log.txt.

STDOUT 및 STDERR을 모두 리디렉션하려는 경우:

exec >/path/to/log.txt 2>&1

아니면 그냥 STDERR:

exec 2>/path/to/log.txt

이제 로그 파일은 스크립트가 포그라운드에 있는지 또는 백그라운드에 있는지에 관계없이 STDOUT(및/또는 STDERR)을 갖게 됩니다.

관련 정보