이 특정 서버에서 매우 실망스러운 문제에 직면했습니다. ctrl+를 누를 때마다 c루트 세션에서 로그아웃됩니다.
CentOS Linux 버전 7.3.1611 및 Bash(4.2.46-21.el7_3.x86_64) 실행
[root@server ~]# uname -a
Linux server 3.10.0-514.16.1.el7.x86_64 #1 SMP Wed Apr 12 15:04:24 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
[root@server ~]# ^C
[root@server ~]# logout
[user@server ~]$
답변1
Bash에서 Ctrl-C 캡처CTRL+를 캡처 C하여 특정 작업을 트리거하는 방법을 설명합니다 . 강제로 비슷한 트랩을 실행하고 있다면 계정( 등)
을 확인하세요.root
bashrc
로그아웃CTRL+를 누르면C
Bash에서 ctrl-c 캡처
내장된 트랩을 사용하여 Bash 스크립트 실행 중에 사용자가 ctrl-c를 누르는 상황을 처리할 수 있습니다. 예를 들어 일부 청소 기능을 수행해야 하는 경우입니다.
#!/bin/bash # trap ctrl-c and call ctrl_c() trap ctrl_c INT function ctrl_c() { echo "** Trapped CTRL-C" } for i in `seq 1 5`; do sleep 1 echo -n "." done
답변2
귀하의 bash 환경이 실제로 bash를 실행하는 bash 래퍼가 아닌지 확인할 수 있습니다.
우리는 SSH를 사용하여 수행된 모든 작업을 추적하는 유사한 솔루션을 직장에서 사용하지만 문제는 ctrl+c가 포함될 때마다 셸을 종료하는 것과 정확히 동일합니다.
답변3
모든 운영 체제에서 처리해야 하는 신호를 찾을 수 있습니다. 신호에 대한 세 가지 반응이 있습니다. 1-무시하기, 2-직접 처리하기, 3-운영 체제에 맡기기입니다. Ctrl+C는 기본적으로 끊기 신호입니다. 명령을 사용하여 trap
신호를 처리합니다. 또한 시스템의 ASCII 표준을 확인하십시오. 일부 인코딩은 다를 수 있습니다. man ascii
HUP 표시와 그것이 속한 임차인을 확인하세요 . Trap 명령 예:
trap "echo hi" SIGINT
Ctrl + C를 누를 때마다 hi가 인쇄됩니다. 명령을 통해 신호 목록을 찾을 수도 있습니다 kill -l
.