这个事儿吧有点扯, 说来话长.
就是正常来说, 登录 Linux 以后, 你点击 ctrl-c
快捷键, 屏幕上会出现 ^C
字样并新起一行吧? 而且你随便运行一个程序后点击 ctrl-c
也应该会发送 sigint
给该程序使得该程序正常终止吧?
现在的问题就是我的 ctrl-c
完全失效了. 点了以后上面的效果都没有了. 我之前有一台虚拟机就遇到过这个问题, 研究半天没搞明白, Google
也没有答案. 于是就放弃了, 直接重装了虚拟机.
今天我的 vultr
服务器也出现了这种状况, 但是我不想重装, 只能凭感觉挨个把最近安装过的东西删掉看能否正常. 结果删除了 rvm(这个大家知道吧? Ruby 的一个管理软件)
以后, ctrl-c
就恢复了. 回忆了一下之前虚拟机当时其实也是装了 rvm
之后不久就出现了这个不正常状况.
所以我的结论就是 rvm
导致我的 ctrl-c
失效了. 不知道有没有人遇到过类似的情况? 我反正觉得肯定是 rvm
附带安装的什么脚本或者什么东西把 ctrl-c
发出的信号给拦截了, 导致 ctrl-c
失效.
或者有没有人能给个思路怎么样去调查和证明到底是什么东西拦截了 ctrl-c
发出的 sigint
信号呢?
写得可能稍微有点啰嗦, 希望大家能耐心看完...
看了 issue 后加上我的实际情况顺便总结一下,已确认使用以下命令安装 rvm 后
gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB
curl -sSL https://get.rvm.io | bash -s stable
如果 rvm -v
的版本是 1.29.4,那么 ctrl-c 就会失效。
此时查看 trap
会显示:
[lane@vultr ~]$ trap
trap -- '' SIGINT
trap -- '' SIGQUIT
trap -- '' SIGTSTP
trap -- '' SIGTTIN
trap -- '' SIGTTOU
[lane@vultr ~]$
可见比正常情况多出了 SIGINT
和 SIGQUIT
。
临时解决方案可以是:trap - INT QUIT
,这样就可以使用 ctrl-c 了。但是有个问题是使用 cd
命令切换目录后还是会失效。所以这个方案并不是太好。
不过反正他们讨论的结果是已经解决了这个 bug,所以我们直接下载最新的 rvm 好了:
rvm get head
1
sammo 2018-09-13 23:35:44 +08:00 via iPhone
rbenv 是 rvm 的替代品
|
2
ysc3839 2018-09-13 23:48:34 +08:00 via Android
搜索 issue 发现是已经被修复的。
https://github.com/rvm/rvm/issues/4422 |
3
msg7086 2018-09-14 03:18:22 +08:00
我现在已经不用 rvm 了。新版本兼容性足够好,2.1 到 2.5 的代码基本随便跑了。Debian 官方源直接一把梭 install ruby2.5 解决。
|
4
zhanglintc OP @ysc3839 #2 原来如此。 当时好像搜索到过这条 issue,但是那时还没有确认是 rvm 的锅,所有都没仔细点开看。这下确认了就是这个问题了。感谢。
|
5
guodage003 2018-11-21 11:16:25 +08:00
确实是,在配置 redis 集群时顺便安装了 1.29.4 的 rvm
升级后就好了 |