예를 들어 하나의 쉘 세션에서 명령을 실행한다고 가정하십시오 bash -c 'apt-get update && apt-get upgrade'
. 5 분 후 나는 간식을 위해 밖에 나가기로 결심했고, 출구가 성공인지 실패인지에 대한 알림 메커니즘 을 추가하는 것을 잊었다 .
글쎄, 지금은 무엇입니까? 다른 터미널에서 다른 명령 (또는 특히 PID)의 종료 상태를 쿼리 할 수 있다면 결국 일종의 팝업을 표시 할 수 있습니다. 그래서 질문은 : 다른 터미널에서 이미 실행중인 프로세스의 종료 상태를 어떻게 쿼리 할 수 있습니까?
다시 말해,
터미널 A에서 실행중인 프로세스를 가지고 있으며 PID가 알려져 있습니다.
터미널 B에서 명령을 실행할 때
그런 다음 터미널 A의 프로세스가 종료 상태 0 또는 종료 상태> 1로 끝나는 지 알 수 있어야합니다.
따라서 명령 B로 "감시자"를 연결 한 후 지정된 임의의 프로세스 A (지정된 PID)가 종료되면 무언가 (종료 코드를보고하는 경고 명령?)가 실행되도록 하시겠습니까? A가 나중에 B를 입력하는 동일한 쉘에서 실행되는 백그라운드 작업이라고 가정 할 수 없습니다.
—
바이트 사령관
@ByteCommander 맞습니다. 포 그라운드 작업입니다.
—
Sergiy Kolodyazhnyy
다른 쉘의 자식에서 반환 코드를 얻는 것이 가능하지 않다고 생각합니다.
—
바이트 사령관
wait
종료 후 현재 쉘에서 백그라운드 프로세스의 코드를 얻는 데 사용할 수 있지만 다른 쉘을 쿼리 할 수있는 것을 찾을 수 없습니다. 프로세스가 여전히 실행 중인지 모니터링하고 종료되면 경고를 발생시키는 것도 간단하지만 종료 코드를 찾지 못합니다. 내가 생각할 수있는 유일한 방법은 쉘 PROMPT_COMMAND
을 임시 종료 코드 또는 비슷한 접근 가능한 위치에 저장하도록 쉘을 준비해야합니다 . 그게 옵션일까요?
@ByteCommander 아니요. 터미널 A를 준비하지 않고 터미널 B에서 모든 작업을 수행하십시오. 그리고 가능합니다.
—
Sergiy Kolodyazhnyy
글쎄, 그것은 영원한 준비 (.bashrc를 한 번 편집) 일 것입니다. 답변을 찾으면 기대합니다.
—
바이트 사령관