gnu 화면: 주어진 실행 프로세스나 변수가 있는 화면 창을 찾으시겠습니까?

gnu 화면: 주어진 실행 프로세스나 변수가 있는 화면 창을 찾으시겠습니까?

내 ~50개의 gnu 화면 창 중 어떤 창에 특정 변수가 정의되어 실행되는 프로세스가 있는지 알고 싶습니다. 예를 들어, 약 일주일 전에 저는 다음과 같이 했습니다.

id=ABC123456; ~/run_long_process $id

이것은 내 ~50개 gnu 화면 창 중 하나에서 실행 중이며 많은 STDOUT/STDERR을 생성하지만 각 창을 뒤로 스크롤하거나 Ctrl+Z를 누르고 각 창을 다시 시작하는 것 외에 어떤 것이 무엇인지 알아낼 수 있는 방법이 있습니까? 하나야? 어떤 제안이 있으십니까?

답변1

Linux라면 다음과 같은 프로세스를 따를 수 있습니다. "장기 실행 프로세스"의 예로 영원히 잠들어 있는 "perl -e sleep"을 사용하겠습니다.

$ id=ABC123456; perl -e sleep $id

이제 실행 중인 프로세스를 찾아야 합니다.

$ ps -Af | grep [A]BC123456
user  30579 22013  0 09:32 pts/10   00:00:00 perl -e sleep ABC123456
#           ^^^^^ parent PID

이제 부모의 PID가 있으므로 해당 환경을 스누핑하여 변수를 screen설정할 수 있습니다 WINDOW.

$ tr '\0' '\n' < /proc/22013/environ | grep WINDOW
WINDOW=3

맞습니다. 스크린 창 3에서 실행했습니다. 이것은 환경 변수이므로 작업이 이를 상속할 가능성이 높으므로( exec()사용되는 호출 유형에 따라) 작업 환경도 스누핑할 수 있습니다. 그리고 같은 결과를 찾으세요.

관련 정보