この特定のサーバーで非常に残念な問題に直面しました。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をキャプチャ
組み込みトラップを使用すると、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
すべてのオペレーティングシステムで処理する必要がある信号を見つけることができます。シグナルに対する3つの反応がある。 1-無視、2-直接処理、3-オペレーティングシステムに任せます。 Ctrl+C はデフォルトでは破棄信号です。コマンドを使用してtrap
信号を処理します。また、システムのASCII規格を確認してください。一部のエンコーディングは異なる場合があります。man ascii
HUPマークとそれが属するテナントを確認してください。 Trapコマンド例:
trap "echo hi" SIGINT
Ctrl + Cを押すたびにhiが印刷されます。コマンドを使用して信号のリストを見つけることもできますkill -l
。