Ctrl+C 대신 새로운 키 매핑을 통한 프로세스 중단(interrupt) 방법

PROBLEM DESCRIPTION or QUESTION


Xshell에서 Ctrl+C를 문자열 복사를 위한 키로 설정하였습니다. 그 후 프로세스 중단을 위해 Ctrl+C 키를 눌러도 프로세스가 중단되지 않습니다.

RESOLUTION


진행 중인 프로세스를 중단(interrupt, intr)하기 위해서 보통 Ctrl+C 키를 사용합니다. 접속한 서버에서 현재 중단을 위해 어떤 키가 설정되어 있는지는 'stty -a' 명령을 통해 확인할 수 있습니다.

$ stty -a
speed 38400 baud; rows 47; columns 236; line = 0;
intr = ^C; quit = ^; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0;

Xshell에서 Ctrl+C를 문자열 복사를 위해 할당하였다면 Xshell은 더이상 해당 키 값을 서버에 보내지 않으므로 프로세스 중단을 할 수 없습니다. 이와 같은 설정 상황에서 다음과 같은 방법으로 프로세스 중단을 할 수 있습니다.

 

터미널에서 새로운 키 값 할당

중단을 위한 새로운 키 값을 할당할 수 있습니다. 중복되지 않을 값을 확인하여 키를 할당합니다.

$ stty intr ^K
$ stty -a
speed 38400 baud; rows 47; columns 236; line = 0;
intr = ^K; quit = ^; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0;

^K는 ASCII 코드의 11번째 문자의 캐럿 표현으로 하나의 문자입니다. 이 문자를 터미널에서 Ctrl+V, Ctrk+K 키를 연속으로 눌러 표현합니다. 일부 터미널에서는 ^문자와 K 두 개의 문자로 입력하여도 인식하는 경우가 있습니다.

 

Xshell에서 새로운 키 할당

Xshell 키 ‘사용자 지정 키 매핑’에서 Ctrl+C 키 값을 위한 새로운 키를 설정합니다. 예로 Ctrl+Shift+C 키를 사용해 보겠습니다.

  1. ‘도구 → 옵션 → 키보드와 마우스 탭 → 편집’을 통해 ‘사용자 지정 키 매핑’ 대화 상자를 엽니다.

  2. ‘새로 만들기'를 누른 후 ‘Ctrl+Shift+C’ 키를 누릅니다.

     

  3. ‘편집’ 대화 상자에서 동작에서 ‘문자열 보내기’를 선택하고, 문자열에 Ctrl+C의 아스키 코드 값은 ‘\003’을 입력합니다.

  4. 해당 설정을 저장한 후 터미널에서 Ctrl+Shift+C 키 입력하여 진행 중인 프로세스가 중단되는 것을 확인해 봅니다.