在 GNU 屏幕中禁用 Ctrl+C?

在 GNU 屏幕中禁用 Ctrl+C?

如何在 GNU 屏幕上禁用组合键Ctrl+ ?C实际上我必须习惯它,但我出于习惯而按Ctrl+C而不是Ctrl++ 。AD

答案1

现在我自己找到了答案。说明

defscrollback 30000
bindkey "^C" echo 'Blocked. Please use [Ctrl]+[A] + [Ctrl]+[Enter] + [Y]'
bindkey "^D" echo 'Blocked. Please use [Ctrl]+[A] + [Ctrl]+[Enter] + [Y]'
bind "^M" quit

在文件中

~/.screenrc

导致Cc只执行echo命令,不再发送中断。相反,您可以使用^MCtrl+停止屏幕Enter。因为我使用bind(与bindkey)不同,所以你必须先按 Ca。确认提示可以通过 进行确认Y。该解决方案的优点是我不必更改实际的 Java 或 Python 程序。请记住,必须重新启动正在运行的屏幕会话才能读取新~/.screenrc文件。 (此路径取决于用户,例如/root/.screenrc/home/user/.screenrc。)

有用的网址:

测试用

  • 屏幕版本 4.01.00devel (GNU) 2006 年 5 月 2 日
  • Ubuntu 14.04.5 LTS
  • MobaXterm v10.9 内部版本 3656 (Windows)

答案2

Ctrl+CINT向当前位于前台的进程发送(中断)信号。这是一个能够发送的重要信号,因此最好的办法是学会不要错误地按下该组合键。

还可以重新映射该组合键,以便您有另一个发送INT信号的控制序列。例如,您可以Ctrl+G使用 shell 命令做同样的事情

stty intr ^G

然后,组合Ctrl+C键将仅发送 ASCII 代码 3 的字符。

同样,只要学会正确使用,问题可能就不那么大了Ctrl+C

答案3

您可以通过使用日志记录首先避免此问题,如下所示:

  1. 创建屏幕时,使用以下命令生成日志文件:
screen -L -Logfile file_name.log
  1. 现在,要检查屏幕,请不要恢复它;而是以交互方式读取日志文件这两个命令的:
tail -f -n 20 file_name.log
watch tail file_name.log

希望这可以帮助。

相关内容