스크립트에서 GNU 화면에서 실행되고 있는지 알 수 있습니까?


10

우리는 때때로 수동으로 시작되는 원격 서버에서 오래 실행되는 프로세스를 가지고 있습니다. 불행히도 인터넷 연결이 끊어지고 커널 패닉이 발생하고 작업을 연결하고 시작하는 데 사용되는 ssh 세션에서 다른 많은 문제가 발생할 수 있습니다.

화면은 프로세스가 중단되지 않도록하는 완벽한 방법 인 것 같습니다. 그러나 항상 화면을 시작한 다음 스크립트를 실행하여 프로세스를 시작하는 것을 기억하는 사람에게 의존하는 것은 기다리는 문제입니다. 스크립트가 화면 내에서 호출되는지 확인할 수있는 방법이 있습니까? 프로세스가 계속 진행되면 스크립트가 종료되고 사용자에게 먼저 화면을 실행하라는 메시지가 표시됩니다.


답변:


11

이에 대한 환경 변수가 있습니다. 이 화면에서 실행되는 경우 $TERM가 될 것이다 screen. 그렇게 간단합니다. 그냥 if하십시오. 예를 들어

if [ $TERM != 'screen' ]; then echo foo; else echo bar; fi

화면에있을 때 바가 울립니다. 그렇지 않으면 foo.


2
screen-256color사용자가 256 색 지원을 구성한 경우 일 수도 있습니다 .
mgorven

byobu가 설치된 시스템의 경우 화면 bce. echo $ TERM screen-
bce

7

화면 작업 중 'nohup'으로 스크립트를 실행 해보십시오. 또한 연결이 끊어진 경우에도 계속 실행됩니다.

기본적으로 파일로 출력되므로 원하는 경우 다른 도구를 사용하여 스크립트 출력을 모니터링 할 수 있습니다.


1
nohup으로 실행하면 프로세스가 계속 실행되도록 동일한 결과를 얻을 수 있지만 nohup으로 스크립트 실행을 잊어 버린 사람과 같은 문제가 여전히 있습니까? 또는 'nohup'이 사용되도록 스크립트에 방법이 있습니까, 아니면 nohup을 사용하여 원본 스크립트를 호출하는 래퍼 스크립트를 만들어야합니까?
cclark

네. 나는 아이들을 좋아하는 것처럼 나의 padawans (주니어 시스템 관리자)를 좋아하지만 종종 그런 종류의 것들을 잊어 버립니다. 따라서 중요한 명령 앞에 접두사를 입력 할 필요가 없도록 모든 것이 마무리됩니다.
Magellan
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.