Ctrl-C가 실행중인 작업을 종료하지 않으면 어떻게해야합니까?


98

때로는, 프로세스에 의해 전송되는 SIGINT 신호를 무시 Ctrl- C배쉬에 있습니다. 예를 들어, man와 vi. 실행중인 프로세스를 종료하는 방법에 대해 Google을 읽거나 매뉴얼을 읽지 않으려는 경우 항상 터미널을 떠나지 않고 작동 하는 키 시퀀스가 있습니까?

답변:


141

+ 와 함께 SIGQUIT 신호를 보냅니다 .Ctrl\

.. $ sleep 10
^\Quit

→와 같습니다 kill -3 pid. 사용자 공간에서 실행되는 프로그램은 sigquit를 무시하지 않습니다.

세트도 있습니다 매직 SysRq를의 키보드 단축키. 더 흥미로운 것 중 하나는 Alt+ SysRq+ k입니다. 현재 가상 콘솔에서 모든 프로세스를 종료합니다. 당신의 tty 중 하나가 완전히 그리고 완전히 깨진다면, 이것은 되돌아 갈 때 사용될 수 있습니다 . X.org를 실행하는 tty에서는 자비없이 X를 죽일 수 있습니다.

SysRq 키는 대부분의 키보드에서 인쇄 키와 동일합니다. 내 노트북에서는 Fn 키를 사용하여 호출 할 수 있습니다. 즉, Alt → Fn → Print → k를 차례로 입력하십시오.

기본 프로세스 관리 바로 가기는 다음과 같습니다.

  • Ctrl+ Z: 프로세스 일시 중지 (플러스 bg백그라운드에서 다시 시작 fg하고 포 그라운드로 올림)
  • Ctrl+ C: 프로세스를 정중하게 요청하여 지금 종료하십시오.
  • Ctrl+ \: 현재 포 그라운드에있는 프로세스를 무자비하게 종료
  • Alt+ SysRq+ s: 디스크에 데이터 쓰기 (중요한 사항을 죽이기 전에 항상 수행)
  • Alt+ SysRq+ s, k: 주어진 가상 콘솔에서 모든 현재 프로세스를 무자비하게 종료
  • Alt+ SysRq+ s, b: 마운트를 해제하지 않고 무자비하게 재부팅합니다.
  • Alt+ SysRq+ r, e, i, s, u, b: 안전하게 r에 EBOOT의 전자 VEN 난 은 F S의 템 인 유 tterly ㄴ roken은

참고 : Ctrl+ Z, 대조적 Ctrl+ C과 Ctrl+ \, 또한 작동 man, vi, less, 등이있다.

의심스러운 경우 다음 절차는 거의 항상 작동합니다.

~$ sleep 10
^Z
[5]+  Stopped              sleep 10
~$ ps
  PID TTY          TIME CMD
 4804 pts/0    00:00:00 bash
 6207 pts/0    00:00:00 sleep
 6208 pts/0    00:00:00 ps
~$ kill -9 6207
[5]+  Killed                  sleep 10
~$ 

^ Z는 물론 Ctrl+ Z를 눌렀 음을 나타냅니다 .


Shells and Terminals에 대한 자세한 내용은 다음에서 내 답변을 참조하십시오.


3
"sleep 10"에서는 작동하지만 "man"또는 "vi"에서는 작동하지 않습니다. 분명히 "kill -9 pid"는 두 프로세스를 모두 죽일 때 작동합니다. 뭔가 빠졌습니까?
— Olivier Lalonde

3
Ctrl + Z 는 less, man, vi 등과 같은 것들과 작동합니다. 그런 다음 a ps를 수행하여 프로세스 ID를 확인 kill pid하거나 또는 프로그램의 다른 인스턴스에 대해 신경 쓰지 않으면을 사용하여 종료 할 수 killall vi있습니다. 어쨌든 Ctrl-Z는 항상 작동하는 것 같습니다.
— Stefano Palazzo

5
kill %%마지막 작업을 종료 할 수도 있습니다. kill %5여기서 5는에 표시된 작업 번호입니다 jobs.
— Olivier Lalonde

2
Ctrl- \는 SIGKILL이 아닌 SIGQUIT를 보냅니다 . SIGQUIT와 SIGKILL 간에는 몇 가지 중요한 차이점이 있습니다. en.wikipedia.org/wiki/SIGQUIT
— 줄리아노

4
키보드 레이아웃에 키 가 없을 때 Ctrl+를 어떻게 누르 나요? \ \
— Forivin


8

때때로 CTRL+C가 잘못된 프로그램 또는 입력 채널로 전송되고 있습니다. vi파이프 출력이있는 명령, 루프와 관련된 복잡한 bash 명령 등이있는 편집기에서 특히 일반적입니다 .

간단하고 빠른 해결책은 작업을 일시 중단 한 CTRL+Z다음 작업 번호 ( kill %1또는 kill -9 %1등)로 종료하는 것입니다.


6
  • 다음 중 하나를 시도하십시오.

    Ctrl+4

    Ctrl+\


  • 또는:

    Ctrl+ Z다음을 실행하십시오.

    kill %1

- %1를 누를 때 반환 된 작업 수는 어디에 있습니까 ? 강제 종료를 추가하십시오 .ControlZ-9


텍스트 콘솔에있을 때 다음을 시도 할 수도 있습니다 Ctrl.- SysRq. 커널은 프로세스를 종료해야합니다.

또는 SysRq- k현재 가상 콘솔에서 모든 프로세스를 종료합니다 (X 및 svgalib 프로그램도 종료 할 수 있음).

참고 : 고정 된 그래픽 프로그램을 종료하기 위해 매직 SysRq 키를 사용하는 경우 프로그램은 텍스트 모드를 복원 할 수 없습니다. 이것은 모든 것을 읽을 수 없게 만들 수 있습니다.

Magic SysRq 키와 해당 명령 조합을 참조하십시오 .



0

복사 바로 가기를 다음에서 변경했을 수 있습니다.

CTRL+ SHIFT+C

에

CTRL+C

이렇게하면 프로세스를 죽이려고 할 때 CTRL+ C가 작동하지 않습니다.

복사 바로 가기를 CTRL+ SHIFT+ 로 바꾸십시오 C.


1
복사 바로 가기 변경은 프로세스를 강제 종료하는 것과 무관합니다!
— SuB

답을 조금 더 넓힐 수 있습니까? 단계별로 이상적 일 것이므로 주로 OP가 제안과 함께 수행 할 수 있습니다. :)
— ThatGuy

이것은 실제로 나를 도왔습니다. 나는 맥 OS에 CTRL + C를 사용 해요, 그리고 우분투 명령을 몰랐습니다 CTRL + 시프트 + C
— ratskin

-1

시도 Ctrl+ Alt+Backspace

우분투 10.04를 사용하는 경우이 키가 작동하도록 설정하고 싶습니다.

사용하려면 Control- Alt-Backspace

시스템으로 이동-> 환경 설정-> 키보드

레이아웃 탭을 선택하고 레이아웃 옵션을 클릭하십시오 .

키 서버를 선택 하여 X 서버를 종료 하고 Control+ Alt+를Backspace 활성화하십시오 .

노트 :

누르면 Ctrl- Alt- BackspaceX 서버를 다시 시작합니다.


터미널 내에서 프로세스를 종료하고 싶다는 것을 분명히하기 위해 질문을 편집했습니다.
— Olivier Lalonde
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.