我在此特定服务器上面临一个非常令人沮丧的问题,每次按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 ascii
HUP 标志及其所属承租人。 trap 命令示例:
trap "echo hi" SIGINT
每次按 Ctrl + C 时都会打印 hi 。您也可以通过命令找到信号列表kill -l
。