私は答えを探しましたが、今のところ私の質問に答えるものは何も見つかりません。現在Ubuntuサーバーにログインしていますが、プロセスを実行すると、そのサーバーで割り込みを実行できません。これが私のstty -aです。
user@Ubuntu1:~$ stty -a
speed 38400 baud; rows 93; columns 200; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = M-^?; eol2 = M-^?;
swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V;
flush = ^O; min = 1; time = 0;
割り込みを変更する.bashrcには何もありません。
これは、rootを含むすべてのユーザーで同じです。また、別の端末を使用して別の場所からログインしようとしましたが、毎回この同じ結果が表示されます。ログインにsshとssh -Xの両方を使用しました。
編集:ローカルではすべての割り込みが正常に機能します。
更新:私はまだ答えを探しています。私の友人もまったく同じ問題を抱えています。問題は、(PC、Mac、Linuxから)ログインしたときに、キーボードがこれらのキーを正しく認識していない場合でも、それらを取得していないことにあるようです。
ctrl+c プログラムを殺すことはありません、
POSIX標準が定義する一連の信号があり、これらは実行中のプログラムを制御するために使用されます。
First the signals described in the original POSIX.1-1990 standard.
Signal Value Action Comment
──────────────────────────────────────────────────────────────────────
SIGHUP 1 Term Hangup detected on controlling terminal
or death of controlling process
SIGINT 2 Term Interrupt from keyboard
SIGQUIT 3 Core Quit from keyboard
SIGILL 4 Core Illegal Instruction
SIGABRT 6 Core Abort signal from abort(3)
SIGFPE 8 Core Floating point exception
SIGKILL 9 Term Kill signal
SIGSEGV 11 Core Invalid memory reference
SIGPIPE 13 Term Broken pipe: write to pipe with no
SIGTERM 15 Term Termination signal
- http://man7.org/linux/man-pages/man7/signal.7.html
ctrl+c 信号を送信2
、「キーボードから割り込み」から、ターミナルから実行したプログラムに。
そのシグナルを処理するのは完全にプログラム次第であり、それはそれについてそれが望む何でもすることができます。多くのスクリプト言語インタープリターは、呼び出されたスクリプトを強制終了して正常に終了することにより、デフォルトの方法でこれを処理します。
特に自動コンテキストからプログラムを終了する場合は、singal 15をお勧めします。kill
プログラムを使用して、ID(pid)でプロセスにシグナルを送信できます。
kill -15 <pid>
私の知る限り、プログラムはこの信号自体を受信しているので、できるだけ早くASAPを終了する必要があります。
ただし、プログラムがシグナル15を無視する場合、プログラムは存続します(そして、アクセス許可エラーのためにシグナルの送信に失敗していません)
kill -9 <pid>
シグナル9は、私の知る限り、カーネル(タスクマネージャー、およびハードウェアインターフェイス)によって解釈されます。カーネルはプログラムの処理を突然停止し、そのすべてのリソースの割り当てを解除/解放します。
ここにいくつかの筋金入りのトリックがあります:
Control-Z
プロセスを一時停止し、そのプロセスのジョブIDを返します
次に:
kill -9 %1
(1をジョブIDに置き換えます)。
注:パーセンテージは必須です!そうしないと、initプロセスが強制終了されます。つまり、カーネルが強制終了され、システム全体がクラッシュします(その間にスペースを入れないでください)。
Ctrl + cはプロセスを強制終了しません。現在実行中のプロセスを途中で停止するだけです。プロセスを強制終了するには、 "KILL"コマンドを使用する必要があります
私はこれに遭遇しました 古いフォーラム投稿 この特定の問題について。デフォルトの割り込みシーケンスは、別の設定ファイルのどこかで上書きされる可能性があるようです。
このプロセスを外部でkillするだけの場合は、killを使用できます。極端なkill -9にジャンプするのではなく、この killing processesに関する記事 で説明されているようにkillをエスカレーションする必要があることに注意してください。
ウィキペディアは素晴らしい killプログラムのリソース です。 nixシグナルのリスト とその機能もここにあります。