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


98

때로는, 프로세스에 의해 전송되는 SIGINT 신호를 무시 Ctrl- C배쉬에 있습니다. 예를 들어, manvi. 실행중인 프로세스를 종료하는 방법에 대해 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+ CCtrl+ \, 또한 작동 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.