사용하지 않는 그놈 터미널을 닫습니다.

사용하지 않는 그놈 터미널을 닫습니다.

작업하는 동안 저는 많은 그놈 터미널을 실행하여 작업을 수행합니다. dd첫 번째 터미널에서는 일부 작업을 수행하기 위해 서버 세트와 함께 12개의 SSH 세션을 갖습니다. 이러한 세션은 작업을 완료 중이었고 유휴 상태이거나 명령 후에 세션이 닫혀서 연결이 끊어졌습니다.

그러나 사용하지 않는 gnome 터미널 프로세스를 종료하려면 스크립트가 필요합니다. 하위 프로세스가 없는 모든 zsh 프로세스를 부드럽게 종료하는 것을 고려했습니다. 그러면 터미널이 깔끔하게 닫힐 것입니다.

init─┬─[...]
     ├─gnome-terminal─┬─gnome-pty-helpe
     │                ├─2*[zsh───ssh]
     │                ├─zsh───dd
     │                ├─zsh───pstree
     │                ├─4*[zsh]                 <<<<
     │                └─{gnome-terminal}
     .
     .
     .

나는 실행 중인 프로세스를 확인하고 zsh에 하위 프로세스가 없고 4시간 동안 활동이 없는 경우 종료하기 위해 다소 간단한 bash 스크립트를 작성할 생각입니다.

잘 모르겠습니다

  • 일반적으로 좋은 생각이라면.
  • 누구든지 이 작업을 수행하는 도구를 출시한 경우
  • zsh의 하위 프로세스를 가져오는 방법이 있는 경우( greping 및 awking pstree출력 없이;)
  • 마지막 활동을 어떻게 얻을 수 있나요(zsh의 사전 및 사후 명령을 고려하세요)
  • kill -HUP <zsh pid>프로세스를 종료하는 것보다 더 좋은 방법이 있다면

미리 감사드립니다

답변1

zsh 매뉴얼에 따르면

TM 출력 이 매개변수가 0이 아닌 경우 프롬프트가 표시된 후 지정된 시간(초) 내에 명령이 입력되지 않으면 쉘은 ALRM 신호를 수신합니다. SIGALRM에 트랩이 있는 경우 트랩이 실행되고 트랩이 실행된 후 TMOUT 매개변수의 값을 사용하여 새 경보가 예약됩니다. Trap이 설정되지 않고 단말의 유휴 시간이 TMOUT 매개변수 값 이상인 경우 zsh가 종료됩니다. 그렇지 않으면 마지막 키를 누른 후 TMOUT 초 이내에 새 알람이 예약됩니다.

나는 테스트했다

zsh> export TMOUT=10        

쉘이 종료되면 고급 그놈 터미널이 종료됩니다. 동일한 메커니즘이 bash에서도 작동합니다. 이는 쉘 프롬프트가 실행된 후에만 계산을 시작하므로 사용 중인 터미널을 손상시키는 것에 대한 우려를 해결합니다.

나는 이것이 상태가 손실될 수 있는 "마법의" 이벤트를 생성하기 때문에 일반적으로 좋은 생각이 아니라고 생각합니다. 선택한 창 관리자의 "창 닫기" 및 "다른 창(아마도 터미널)에 초점 맞추기" 키를 더 잘 활용하는 것이 좋습니다. 그러나 정말로 터미널을 원한다면 이것이 아마도 가장 좋은 방법일 것입니다.

답변2

exec시작 명령(예 : )을 사용하는 경우 exec ssh *hostname*프로세스가 종료될 때 실행 중인 gnome 터미널이 닫혀야 합니다(기본값인 명령이 종료될 때 터미널을 종료하도록 설정했다고 가정).

정지된 프로세스를 처리하려면 셸의 시간 초과 기능이나 기타 인텔리전스를 사용해야 하지만 터미널 세션을 닫으려고만 하면 정상적인 종료나 원격 연결 끊김이 처리됩니다.

관련 정보