web-dev-qa-db-ja.com

Control-Cはbashのルートからのログアウトをトリガーします

押すたびに、この特定のサーバーで本当に苛立たしい問題に直面しています 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 ~]$   
4
Sir Dave

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
6
Yaron

Bash環境が、実際には以下のbashを実行するbashのラッパーではないかどうかを確認できます。

私たちは職場で同様のソリューションを使用しており、SSHを使用して行われたすべてを追跡するために使用されますが、ctrl + cが関係しているときはいつでも、シェルから脱落するのが好きなので、問題はまったく同じです。

2
bocian85

すべてのOSで、処理する必要のあるシグナルを見つけることができます。信号には3つの反応があります:1-無視する、2-自分で処理する、3-OSに任せる。 Ctrl + Cは、デフォルトではハングアップ信号です。 trapコマンドを使用して信号を処理します。また、システムのASCII標準、一部のコーディングは異なる場合があります。HUP記号とそれに属する用船者についてはman asciiを確認してください。トラップコマンドの例:trap "echo hi" SIGINT毎回hiを出力します。 Ctrl + Cを押します。また、kill -lのコマンドで信号のリストを見つけることができます。

0
Ali Ghasempour