⎈ Control보통 리눅스에서는 +를 누르면 프로그램으로 C전송되는데 , 프로그램이 어떻게 처리하느냐에 따라 종료되는 경우가 많습니다.SIGINT
그러나 나에게는 어떤 프로그램도 종료되지 않습니다. 그것은 아무것도 작동하지 않습니다. 일반적으로 프로그램을 종료하는 모든 곳에서는 작동하지 않습니다. 예를 들어 tail -f
로그 파일을 실행 중인 경우입니다 .
전송되지 않는 것 같습니다 SIGINT
. 조정하는 방법이나 확인하는 방법도 모르겠습니다.
프로그램을 종료하려면 ⎈ Control+ Z그런 다음 스레드를 수동으로 종료해야 합니다.
나는 그것을 작동시키기 위해 많은 것을 시도했습니다.
- 다양한 터미널 프로그램
- 다른 사용자
- 서버를 다시 시작하세요
- 다른 껍질(
/bin/bash
/bin/sh
)
유용한 사양:
- CENTOS 7(osx 머신에서 액세스)
- 배쉬 쉘
- iterm 및 터미널 사용
- gcloud 가상 머신
누군가 요청하는 로그나 디버깅 정보를 기꺼이 보내드리겠습니다. 하지만 나는 매우 혼란스러워요.
디버그 정보:
stty -a
speed 38400 baud; rows 62; columns 270; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = M-^?; eol2 = M-^?; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0;
-parenb -parodd -cmspar cs8 -hupcl -cstopb cread -clocal -crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff -iuclc ixany imaxbel iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke
답변1
세상에, 6주 후에 마침내 문제를 알아냈습니다.
디버깅에 사용했습니다 trap
.
달리면 trap
포착된 신호 목록이 제공됩니다.
trap -- '' SIGINT
trap -- '' SIGQUIT
trap -- '' SIGTSTP
trap -- '' SIGTTIN
trap -- '' SIGTTOU
해당 목록에서 SIGINT를 찾았으므로 어떤 이유로 기본적으로 무시되는 트랩 목록에 SIGINT가 추가되었습니다. 좀 더 조사한 후에 내 bash 프로필에서 rvm을 사용하여 로드된 일부 Ruby 라이브러리가 캡처를 엉망으로 만들고 있음을 발견했습니다.
어쨌든 문제를 해결하기 위해 다음을 추가했습니다.
trap - INT
내 bash 구성 파일 끝까지, Ruby 라이브러리의 내용 이후에는 모든 것이 정상입니다.
응!