Control-C 在 bash 中触发从 root 注销

Control-C 在 bash 中触发从 root 注销

我在此特定服务器上面临一个非常令人沮丧的问题,每次按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

您可以使用内置 trap 来处理用户在执行 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 时,它就会退出 shell。

答案3

在每个操作系统中,您都可以找到应该处理的信号。对信号有三种反应:1-忽略它,2-自己处理它,3-留给操作系统。 Ctrl+C 默认为挂机信号。您使用trap命令来处理信号。还要检查您系统上的 ASCII 标准,某些编码可能不同。检查man asciiHUP 标志及其所属承租人。 trap 命令示例: trap "echo hi" SIGINT每次按 Ctrl + C 时都会打印 hi 。您也可以通过命令找到信号列表kill -l

相关内容