쉘 스크립트에서 screen 대신 bash disown을 사용할 때 주의 사항이 있나요?

쉘 스크립트에서 screen 대신 bash disown을 사용할 때 주의 사항이 있나요?

시작하고 로그 파일로 출력하는 프로세스가 있습니다. 이를 시작하는 스크립트는 GNU에서 시작한 screen다음 tail.

프로세스는 즉시 로그 파일에 쓰기 시작하며, 프롬프트로 돌아가기 전에 구성 오류를 찾아내기 위해 이 방법으로 시작하는 것을 지켜볼 수 있는 것이 유용합니다 ctrl-c. 나는 이것이 tail녹음 중인 프로세스를 중지하고 종료하지 않는다는 것을 알고 있습니다.

screen내가 원하는 것은 실행 중인 프로세스가 초기화를 마친 후에만 조치를 취하는 쉘 스크립트에서 두 번째 감시 프로세스를 시작하는 것입니다. 이는 모든 시작 로그 출력 후에만 발생합니다.

screen시작 스크립트를 반복하고 프로세스가 초기화되어 작업을 수행할 때 까지 기다리면 라이브 tail출력이 손실됩니다. 루프에서 기다리는 동안 로그를 모니터링하고 해당 내용을 출력하려고 하면 사용자는 ctrl-c초기화가 완료되기를 기다리는 루프를 중단하지 않고는 스크립트를 일찍 종료할 수 없습니다.

감시 및 tail -f로그 파일을 지원하기 위해 작업을 시작한 다음 disown로그오프해도 작업이 종료되지 않도록 보장할 수 있습니다.

이것은 간단한 질문에 대한 많은 정보이지만 더 나은 대안이 있는지 명확하게 설명하기 위해 내 사용 사례와 관련된 모든 세부 정보를 포함하고 싶었습니다.

또한 주목할 만한 점은 다른 것을 시작할 수 있지만 screen상호 작용할 필요가 없으며 disown더 쉬운 옵션인 것 같습니다.

또한 상위 셸로의 출력을 방지하기 위해 필요에 따라 출력을 리디렉션해야 한다는 것도 알고 있습니다.

스크립트에서 실행한 후 로그아웃했다가 다시 로그인했을 때 올바르게 테스트되고 실행되는 샘플 코드:

#!/bin/bash

( sleep 10s; echo 1 > b ) &
disown

관련 정보