押すたびに、この特定のサーバーで本当に苛立たしい問題に直面しています 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 ~]$
trapping-ctrl-c-in-bash トラップする方法を説明する CTRL+C 何らかのアクションをトリガーするために。
ログアウトを押すときに同様のトラップを実行している場合は、root
アカウント(bashrc
など)をチェックインしてください CTRL+C
ctrl-cをBashでトラップする
組み込みのトラップを使用して、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
Bash環境が、実際には以下のbashを実行するbashのラッパーではないかどうかを確認できます。
私たちは職場で同様のソリューションを使用しており、SSHを使用して行われたすべてを追跡するために使用されますが、ctrl + cが関係しているときはいつでも、シェルから脱落するのが好きなので、問題はまったく同じです。
すべてのOSで、処理する必要のあるシグナルを見つけることができます。信号には3つの反応があります:1-無視する、2-自分で処理する、3-OSに任せる。 Ctrl + Cは、デフォルトではハングアップ信号です。 trap
コマンドを使用して信号を処理します。また、システムのASCII標準、一部のコーディングは異なる場合があります。HUP記号とそれに属する用船者についてはman ascii
を確認してください。トラップコマンドの例:trap "echo hi" SIGINT
毎回hiを出力します。 Ctrl + Cを押します。また、kill -l
のコマンドで信号のリストを見つけることができます。