깨어 난 후 프로세스를 종료 할 수 없습니다.

두 아르테 아리 바스

프로그램을 실행하고 + yes눌러 프로세스를 중지했습니다.CtrlZ

그 후 kill -s 18 <pid>.

그 후에는 Ctrl+를 사용하여 다시 중지 Z하거나 Ctrl+를 사용하여 죽일 수 없었습니다 C. 왜 그런 겁니까?

카밀 마시오 로프 스키

포 그라운드 및 백그라운드 프로세스를 관리하기 위해 쉘과 터미널이 어떻게 협력하는지에 관한 것입니다. 이것은 일어난 일입니다.

yes대화 형 셸에서 실행합니다 . yes별도의 프로세스 그룹 1 에서 생성 . 쉘은 터미널 (터미널 에뮬레이터)에게 새 프로세스 그룹이 이제 포 그라운드에 있음을 알 렸습니다. 용어는 포 그라운드 프로세스 그룹 입니다. 쉘은 포 그라운드 프로세스 그룹이되는 것을 중지 한 자체 프로세스 그룹에 남아 있습니다. 셸은 터미널에서 읽기를 중단하여 효과적으로 백그라운드로 전환되었습니다.

Ctrl+ Z터미널은 SIGSTP포 그라운드 프로세스 그룹으로 전송 합니다. Ctrl+ C는 유사합니다. 신호는 SIGINT있지만 포 그라운드 프로세스 그룹으로 이동합니다.

귀하의 경우 SIGSTP에는 yes프로세스 로 보냈습니다 . 프로세스가 중지되고 부모 (즉, 쉘)가를 수신 SIGCHLD하여 반응 할 수 있습니다. 쉘은 터미널에 새로운 포 그라운드 프로세스 그룹이 쉘 중 하나임을 알리는 방식으로 반응했습니다. 쉘이 터미널에서 읽기를 재개했습니다. 이렇게하면 전경에 배치됩니다. 프롬프트를 인쇄하고 상호 작용할 수 있습니다.

그런 다음 실행 하여 프로세스 2로kill -s 18 … 보냈습니다 .SIGCONTyes

받은 후 프로세스를 계속했다. 여전히 백그라운드에있었습니다. 즉, 프로세스 그룹이 포 그라운드 프로세스 그룹이되지 않았습니다. 그것은 그것이 전경에있을 때와 같이 콘솔에 인쇄되었습니다 3 . 전체 상황은 마치 처음과 같이 중지 를 배경에 놓거나 배경에서 실행하는 것과 같습니다 .SIGCONTyesyesbgyes &

껍데기는 전경에 남아있었습니다. 와 시도 Ctrl+ ZCtrl+는 C단말기 전송하게 유지 SIGSTP하고 SIGINT쉘에 있습니다. SIGINT쉘 아마 인쇄 ^C하고 프롬프트를 다시 썼다, 그러나 때문에 yes매우 빠른 인쇄 (그리고 매우 빠른 터미널 스크롤) 당신이 통보하지 않았다.

그리고 아마도 쉘에 명령을 입력 할 수 있다는 것을 알지 못했을 것입니다. 를 입력 fgEnter하면 쉘은 프로세스 그룹이 yes새 포 그라운드 프로세스 그룹 임을 터미널에 알립니다 . 를 호출 한 직후와 마찬가지로 셸이 자체적으로 배경이됩니다 yes. 그런 다음 + 또는 + 를 눌러 프로세스 SIGSTP또는 프로세스에 보낼 수 있습니다 .SIGINTyesCtrlZCtrlC

시도 해봐.


1 단순 쉘 또는 비대화 형 쉘 (작업 제어가없는 경우)은 프로세스 그룹의 모든 것을 실행할 수 있습니다. 당신이 경험 yes한 것은 별도의 프로세스 그룹에서 생성 되었음을 나타냅니다 .

2 Linux에서 숫자 18이 의미하는 정확한 신호는 아키텍처에 따라 다릅니다 (참조 man 7 signal). 귀하의 설명을 통해 그것이 무엇인지 알 수 있습니다 SIGCONT(의 출력을 조사하여 확인할 수 있습니다 kill -l). 일반적으로 POSIX는 특정 신호에 몇 개의 숫자를 연결 하지만 18은이 숫자 SIGCONT에 속하지 않으며 이러한 신호에 포함되지 않습니다. 보낼 수있는 대부분의 휴대용 방법은 SIGCONT함께 kill -s CONT하지 않는 번호. 이것은 모든 POSIX 호환 (또는 거의 POSIX 호환) OS에서 작동합니다.

3 백그라운드의 프로세스는 일반적으로 제어 터미널에 쓸 수 있습니다. 읽을 수 없습니다. 조사 SIGTTOUSIGTTIN 자세한 사항은 여기 정교하지 않습니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Excel 프로세스를 종료 할 수 없습니다.

분류에서Dev

PHP 데몬 프로세스를 종료 할 수 없습니다.

분류에서Dev

gunicorn 프로세스를 종료 할 수 없습니다.

분류에서Dev

종료 후 컴퓨터를 깨우는 작업을 어떻게 설정할 수 있습니까?

분류에서Dev

ls를 입력 한 후 Sqlite를 종료 할 수 없습니다.

분류에서Dev

우분투 설치 후 Windows를 종료 할 수 없습니다.

분류에서Dev

일시 중지에서 깨어 난 후 시스템 기반 스크립트를 실행할 수 없습니다. 왜?

분류에서Dev

절전 모드에서 깨어 난 후 Windows 7 BSOD를 어떻게 해결할 수 있습니까?

분류에서Dev

절전 모드에서 깨어 난 후 Windows 7 BSOD를 어떻게 해결할 수 있습니까?

분류에서Dev

C #에서 프로세스를 종료 할 수 없습니까?

분류에서Dev

backtick 된 yes 프로세스를 어떻게 종료 할 수 있습니까?

분류에서Dev

그놈 세션을 종료 한 후 로그인 할 수 없습니다.

분류에서Dev

그놈 세션을 종료 한 후 로그인 할 수 없습니다.

분류에서Dev

Eclipse : Java 관점에서 프로세스를 종료 할 수 없습니다.

분류에서Dev

cygwin에서 Windows 프로세스를 종료 할 수 없습니다.

분류에서Dev

16.04로 업데이트 한 후 xubuntu를 종료 할 수 없습니다.

분류에서Dev

13.04를 종료 할 수 없습니다.

분류에서Dev

13.04를 종료 할 수 없습니다.

분류에서Dev

Ubuntu를 종료 할 수 없습니다.

분류에서Dev

pkill은 상위 프로세스 ID가 1 인 프로세스를 종료 할 수 없습니다.

분류에서Dev

대기중인 모든 프로세스를 종료하기 위해 종료 할 프로세스 (PID)를 어떻게 알 수 있습니까?

분류에서Dev

작업 종료 후 로컬 SQL Server에 연결할 수 없습니다.

분류에서Dev

CodeBlocks는 종료 후 바로 가기 설정을 저장할 수 없습니다.

분류에서Dev

MySQL 서버를 시작할 수 없습니다. 제어 프로세스가 오류 코드와 함께 종료되었습니다.

분류에서Dev

실행 후 모든 함수를 어떻게 종료 할 수 있습니까?

분류에서Dev

시작시 프로세스를 종료 할 수 있습니까?

분류에서Dev

처음 설치 후 업데이트 프로세스를 완료 할 수 없습니다.

분류에서Dev

파이썬 다중 처리를 사용하면 자식 프로세스가 다른 자식 프로세스를 어떻게 종료 할 수 있습니까?

분류에서Dev

파이프 된 백그라운드 프로세스를 어떻게 종료 할 수 있습니까?

Related 관련 기사

  1. 1

    Excel 프로세스를 종료 할 수 없습니다.

  2. 2

    PHP 데몬 프로세스를 종료 할 수 없습니다.

  3. 3

    gunicorn 프로세스를 종료 할 수 없습니다.

  4. 4

    종료 후 컴퓨터를 깨우는 작업을 어떻게 설정할 수 있습니까?

  5. 5

    ls를 입력 한 후 Sqlite를 종료 할 수 없습니다.

  6. 6

    우분투 설치 후 Windows를 종료 할 수 없습니다.

  7. 7

    일시 중지에서 깨어 난 후 시스템 기반 스크립트를 실행할 수 없습니다. 왜?

  8. 8

    절전 모드에서 깨어 난 후 Windows 7 BSOD를 어떻게 해결할 수 있습니까?

  9. 9

    절전 모드에서 깨어 난 후 Windows 7 BSOD를 어떻게 해결할 수 있습니까?

  10. 10

    C #에서 프로세스를 종료 할 수 없습니까?

  11. 11

    backtick 된 yes 프로세스를 어떻게 종료 할 수 있습니까?

  12. 12

    그놈 세션을 종료 한 후 로그인 할 수 없습니다.

  13. 13

    그놈 세션을 종료 한 후 로그인 할 수 없습니다.

  14. 14

    Eclipse : Java 관점에서 프로세스를 종료 할 수 없습니다.

  15. 15

    cygwin에서 Windows 프로세스를 종료 할 수 없습니다.

  16. 16

    16.04로 업데이트 한 후 xubuntu를 종료 할 수 없습니다.

  17. 17

    13.04를 종료 할 수 없습니다.

  18. 18

    13.04를 종료 할 수 없습니다.

  19. 19

    Ubuntu를 종료 할 수 없습니다.

  20. 20

    pkill은 상위 프로세스 ID가 1 인 프로세스를 종료 할 수 없습니다.

  21. 21

    대기중인 모든 프로세스를 종료하기 위해 종료 할 프로세스 (PID)를 어떻게 알 수 있습니까?

  22. 22

    작업 종료 후 로컬 SQL Server에 연결할 수 없습니다.

  23. 23

    CodeBlocks는 종료 후 바로 가기 설정을 저장할 수 없습니다.

  24. 24

    MySQL 서버를 시작할 수 없습니다. 제어 프로세스가 오류 코드와 함께 종료되었습니다.

  25. 25

    실행 후 모든 함수를 어떻게 종료 할 수 있습니까?

  26. 26

    시작시 프로세스를 종료 할 수 있습니까?

  27. 27

    처음 설치 후 업데이트 프로세스를 완료 할 수 없습니다.

  28. 28

    파이썬 다중 처리를 사용하면 자식 프로세스가 다른 자식 프로세스를 어떻게 종료 할 수 있습니까?

  29. 29

    파이프 된 백그라운드 프로세스를 어떻게 종료 할 수 있습니까?

뜨겁다태그

보관