79

リモート マシンで長い Linux プログラムを実行していて、それを停止したいのですが、問題は、kill コマンドを使用すると、プログラムが結果を保存せずに終了することです。通常、プログラムを終了するにはCtrl+Cを使用します。その場合、プログラムは結果を保存しますが、現在はセッションを実行しているマシンにいないため、Ctrl+を押すことはできませんC

Ctrl私の質問は次のとおりです: +に相当するリモートの方法はありCますか?

4

6 に答える 6

118

試す:

kill -SIGINT processPIDHere

デフォルトでは、送信するシグナルを指定しない限り、kill は (終了) シグナルを送信しますが、基本的Ctrl CにはSIGINT(割り込み) シグナルを送信します。SIGTERM

于 2009-02-05T06:28:22.057 に答える
8

ctrl c は SIGINT シグナルを送信するだけですが、他にももう少しソフトなシグナルがいくつかあります。http://www.gnu.org/software/libtool/manual/libc/Termination-Signals.html

kill コマンドを使用して、他のシグナルを送信できると思います。(詳細は man kill を参照)

于 2009-02-05T06:28:57.173 に答える
4

長時間実行されるリモート プロセスを制御する場合は、SIGTERM のシグナル ハンドラーをインストールして (man signalおよびman sigactionこのトピックに関する多くの SO の質問を参照)、死ぬ前に適切にクリーンアップすることができます。

これは非常に一般的なことです。

于 2009-02-05T14:57:46.113 に答える
1

シグナル ハンドラーでも、プログラムの残りの部分を破壊することなく、シグナル ハンドラーで実行できることが非常に制限されているという点で、割り込みハンドラーのようなものであることに注意してください。ここでできる最善のことは、atomic_t "should_quit" 変数を設定することです。

于 2009-02-05T15:02:38.553 に答える