無停電プログラムを中断するには?

無停電プログラムを中断するには?

mysqldコマンドラインから実行すると、いくつかの起動メッセージが表示され、応答が停止します。出力を生成せずに入力を無視するので、それを削除する方法がないようです。 ctrl+z と ctrl+c は何もしないので、端末に戻ることはできません。新しいセッションを開始する必要があります。たとえば、SSHを介してサーバーに接続する場合は、新しいSSH接続を開始する必要があることを意味します。

これは非常に迷惑なことです。 bashで現在実行中のプロセスを無効にするように指示する方法はありますか? ctrl + zを使用すると、他のプログラムを一時停止できますが、mysqldは一時停止できません。理由はわかりません。起動するとmysqld &バックグラウンドで実行され、fg誤って入力しない限り正常に信号を送信できます。そうでなければ、通常のプロセスのように動作するので、ctrl +zがうまくいかない理由がわかりません。私はこれがbashの一部であり、プロセスの制御を受けていないと思うからです。

それでは、Ctrl + Zが機能していないときにCtrl + Zを置き換える方法はありますか?

ベストアンサー1

このコマンドは、stty -a現在の端末のすべてのキーボードショートカットを表示します。一般的に、Unixシリーズシステムでマッピングされる信号は、Ctrl+ C(SIGINT)、Ctrl+ \(SIGQUIT)、Ctrl+ Z(SIGTSTP)のみです。他のシグナルへの他のバインディングはないため、現在のセッションでキーボードを使用して他のシグナルを送信することはできません。

通常、dプログラム名の最後の数字は通常「デーモンプロセス」を示します。デーモンはバックグラウンドで実行され、標準入力/出力(パイプ、信号、ソケットなど)以外の手段で動作するように設計されています。これはそれを意味する可能プログラム自体がバックグラウンドで実行されていないと、予期しない動作が発生する可能性があります(たとえば、デーモンが入力、出力でタスクを実行するか、ループ/スタンバイ中にタスクを実行するため、端末が「ハング」したように見えます)

多くの場合、デーモンは特定のシグナルに対してトラップを持ち、それを異なる方法で処理または無視することがあります。テスト目的でバックグラウンドで実行中にSIGINT(+kill -2と同じ)、SIGQUIT(+と同じ)、またはSIGTSTP(+と同じ)を送信しましたか?CtrlCkill -3Ctrl\kill -20CtrlZmysqld

編集:マッピングを変更するには、stty以下を作成する必要があります。

stty <action> <new-mapping>

たとえば、SIGINTをCtrl+に再マップします。X

stty intr ^x

この設定は、現在のセッション中に現在の端末にのみ適用されます。

おすすめ記事