모든 프로세스가 특정 신호를 무시하는 것 같습니다.

모든 프로세스가 특정 신호를 무시하는 것 같습니다.

최근 우리가 구성한 여러 클라우드 서버는 기본적으로 신호를 무시하는 것 같습니다. 이 동작을 일으키는 구성이 무엇인지 알아낼 수 있으며 이는 ctrl신호 포착에 의존하는 + 및 bash 스크립트 모두에 영향을 미칩니다.c

이는 sleep 명령을 사용하여 이 환경(몇 년 전에 설정됨)에서 작동하는 서버를 영향을 받는 서버 중 하나와 비교하여 시연할 수 있습니다.

[email protected] ~ $ sleep 300 &
[1] 9554
[email protected] ~ $ cat /proc/9554/status
Name:   sleep
Umask:  0002
State:  S (sleeping)
Tgid:   9554
<snip /> ...
SigQ:   0/63430
SigPnd: 0000000000000000
ShdPnd: 0000000000000000
SigBlk: 0000000000000000
SigIgn: 0000000000000000
SigCgt: 0000000000000000
<snip /> ...
[email protected] ~ $ kill -s SIGINT 9554
[email protected] ~ $
[email protected] ~ $
[1]+  Interrupt               sleep 300
[email protected] ~ $ ps aux | grep [s]leep

클라우드 가상 머신 중 하나에서 동일한 명령을 실행하면 다음이 생성됩니다.

[email protected] ~ $ sleep 300 &
[1] 2199
[email protected] ~ $ cat /proc/2199/status
Name:   sleep
Umask:  0002
State:  S (sleeping)
Tgid:   2199
Ngid:   0
Pid:    2199
<snip /> ...
SigQ:   0/482668
SigPnd: 0000000000000000
ShdPnd: 0000000000000000
SigBlk: 0000000000000000
SigIgn: 0000000000000006   <-- note the Signal Ignore flag are set
SigCgt: 0000000000000000
<snip /> ...
[email protected] ~ $ kill -s SIGINT 2199
[email protected] ~ $ ps aux | grep [s]leep
me        2199  0.0  0.0 107952   360 pts/1    S    16:35   0:00 sleep 300
[email protected] ~ $ sudo kill -s SIGINT 2199
[email protected] ~ $ ps aux | grep [s]leep
me        2199  0.0  0.0 107952   360 pts/1    S    16:35   0:00 sleep 300
[email protected] ~ $ sudo kill -s SIGKILL 2199
[1]+  Killed                  sleep 300

처음에는 내 pty에 영향을 미치는 SSH 문제인 줄 알았는데, 그런 것 같지 않아서 이 문제를 발견했습니다.U&L 문제실행 중인 프로세스의 상태를 살펴보면 서버가 실행 중인 모든 프로세스를 시작하는 것처럼 보였고 기본 신호 세트를 무시하고 있는 것으로 나타났습니다.

시작하는 모든 프로세스에 대해 차단 신호를 설정하는 방법을 자세히 설명하는 곳을 찾을 수 없습니다. 이런 일을 겪은 사람이 있습니까?

답변1

비슷한 문제가 발생하는 경우 이 특별한 경우 문제는 이러한 클라우드 서버에 이미지의 일부로 설치된 Ruby 가상 머신 v1.27.4의 버그로 인해 발생했습니다.

RVM 버그는 SIGINT를 캡처하지만 정리할 때 해제하지 않는 일반 기능(예: cd)을 재정의하는 스크립트입니다. 자세한 내용은 여기에서 확인할 수 있습니다.루비 RVM 오류

이 경우 해결 방법은 RVM을 최신 안정 버전(이 경우 1.29.7)으로 업데이트하는 것입니다.

curl -sSL https://get.rvm.io | bash -s stable --ruby

mosvy님의 팁에 감사드립니다.

관련 정보