`ssh -N`を終了する「標準」方法は何ですか

`ssh -N`を終了する「標準」方法は何ですか

ポート転送用に特別に開かれたSSHセッションがあるため、-Nコマンドラインにまたはあります。-NTこのセッションを「正常に終了」するように指示する正しい方法が何であるか疑問に思います。 cc( SIGINT) をクリックするとクライアントが終了することがわかりますが、終了コードは 0 ではありません。 「改行文字の後のチルダ」エスケープシーケンスを試しましたが、認識されないようです。コンソールはチルダとドットのみを表示し、ssh(1)の動作は観察されません。

また、終了する方法も見つかりませんssh -Nt。別のターミナルセッションを開き、同様の作業を行う必要がありますkillall ssh

OpenSSH 8.6p1を実行しています。

答え1

killall sshSIGTERM非常に標準的な - 通常、Unix / Linuxのアプリケーションにシャットダウンを指示する方法であるシグナルを送信します。

kill -lSIGQUITたとえば、SIGINT次のようなさまざまなオプションがあります。

詳しくはこのディスカッションをご覧ください。https://stackoverflow.com/questions/4042201/how-does-sigint-relate-to-the-other-termination-signals-such-as-sigterm-sigquit

または正規 glibc ドキュメント:https://www.gnu.org/software/libc/manual/html_node/Termination-Signals.html

$ ssh -N localhost; echo $?
birdie@localhost's password: 
0

(他の端末から)

$ killall ssh

信号処理はアプリケーションごとに異なるため、最終的にソースコードを参照する必要があります。明らかな理由から、SIGKILL合計SIGSTOP信号のみを処理することはできません。

関連情報