쉘 스크립트가 실행하는 데 더 많은 시간이 걸리면 어떻게하면 nohup을 사용할 수 있습니까?


2

필자의 쉘 스크립트는 30 분 정도의 실행 시간이 걸리지 만 점심으로 나가서 나가면 다음과 같이 의심 스럽습니다.

1 : 스크립트가 실행중인 경우 퍼티 세션이 닫힙니 까?

2 : 퍼티 세션이 닫히면 스크립트가 종료됩니다.

내가 사용 nohup scriptname하면 괜찮을까요?


예 (세션이 닫히지 않더라도 스크립트가 사라집니다). 그럼에도 불구하고, screen: 훨씬, 훨씬 더 좋을 것이다 rackaid.com/resources/linux-screen-tutorial-and-how-to
LSerni

답변:


2

PuTTY (또는 다른 SSH 클라이언트)는 화면을 보거나 점심을 먹는 경우 상관하지 않습니다. 자체적으로 세션을 닫지는 않습니다.

다음 경우에만 세션이 종료됩니다.

  1. 수동으로 닫습니다 (예 : 입력 logout, Ctrl+ D, exit등).
  2. 쉘에 자동 로그 아웃 또는 유휴 트리거 세트가 있습니다.
  3. 네트워크 연결이 끊어집니다.

후자는 무작위로 발생해서는 안되지만 불량 장비는 유휴 상태라고 생각할 때 '유용하게'연결을 닫을 수 있습니다. 이것은 대개 소량의 메모리가있는 SOHO 장비에서 발생하며 더 이상 사용되지 않는 것으로 추측 될 때 적극적으로 연결됩니다.


지금까지 puTTY와 세션. 에 관해서는 nohup, 이제 좀 더 깊이 잠수 할 수 있습니다.

처음에는 사람들이 전화선과 모뎀을 사용하여 전화를 걸었습니다. 때때로 그 연결이 끊어졌습니다. 이 경우 쉘은 행이 정지를 감지했다는 신호를받습니다. (신호 1, HUP).

이런 일이 생기면 셸은 SIGHUP으로 실행중인 프로그램에 신호를 보냅니다. SIGHUP은 기본적으로 '전화선이 끊어진'것을 의미합니다. 깔끔하게 종료하십시오. (파일 닫기, 필요한 경우 저장 등).

로그 아웃하거나 puTTY (ssh)가 죽을 때도 같은 일이 발생합니다.

nohup다음과 같은 두 가지 일을 하면서 프로그램을 실행하면 :

  1. SIGHUP은 무시됩니다. 따라서 프로그램이 종료되지 않습니다.
  2. 표준 출력은 nohup.outTTY 대신 파일에 기록됩니다 (기본값 :).

내가 사용 nohup scriptname하면 괜찮을까요?

당신이 사용 nohup scriptname하고 스크립트가 어떤 입력을 필요로하지 않는다면 그렇습니다. 스크립트가 실행되는 동안 스크립트의 출력을 보려면 로그 파일을 꼬리 수 있습니다.

nohup scriptname &
tail -f nohup.out

게다가 nohup적어도 두 가지 흥미로운 옵션이 있습니다.

둘 다 연결 해제 된 회선에서 생존 할 수있을뿐 아니라 나중에 터미널을 다시 연결할 수도 있습니다.

예:

컴퓨터 -1 뒤에 앉아 서버 -1에 로그인했습니다.

screen                         화면 시작
make bzimage                   원하는 작업 / 스크립트
Ctrl+ + A, Ctrl+ D             분리; 로그 아웃 screen이 끝난 것 같습니다.
logout                         

이 시점 screen에서 아직 실행 중이며 스크립트 용 쉘을 제공합니다.

집에 가서 자신의 바탕 화면에 앉아서 서버 -1로 ssh한다고 가정 해 봅시다.

ssh server-1.work.tld
  사용자 이름
  암호
screen -r                      (이전에 추가 된 화면
   ︙                            계속 ) 직장에서 중단 한 곳에서 계속하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.