Ctrl-C는 bash의 루트에서 로그아웃을 트리거합니다.

Ctrl-C는 bash의 루트에서 로그아웃을 트리거합니다.

이 특정 서버에서 매우 실망스러운 문제에 직면했습니다. 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하여 특정 작업을 트리거하는 방법을 설명합니다 . 강제로 비슷한 트랩을 실행하고 있다면 계정( 등)
을 확인하세요.rootbashrc로그아웃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 asciiHUP 표시와 그것이 속한 임차인을 확인하세요 . Trap 명령 예: trap "echo hi" SIGINTCtrl + C를 누를 때마다 hi가 인쇄됩니다. 명령을 통해 신호 목록을 찾을 수도 있습니다 kill -l.

관련 정보