2017-03-02 15 views
0

私は1つのターミナルを開き、Javaサーバーを実行しています。このJARプロセスのプロセスID(PID)を簡単に取得できます。別の端末から、現在実行中の端末と同じ端末でこのプロセスを停止して再起動するように通知したい。これはbashを使って可能ですか?私はそれを停止させ、再び始めるためにPIDに送ることができるシグナルがありますか?bashを使って別のシェルからプロセス(PID)を起動している同じシェルで再起動する方法を教えてください。

答えて

2

別の端末から、現在実行中の端末と同じ端末でこのプロセスを停止して再起動するように通知したいとします。これはbashを使って可能ですか?

killコマンドでシグナルをプロセスに送信できます。特権ユーザーであるか、シグナリングしているプロセスと同じUIDを持つ必要があります。

しかし、上の読み...

は、私はそれを停止し、再び起動させるためにPIDに送ることができる任意の信号はありますか?

新しいプロセスのように、最初から実行しているように、終了と "[再起動]"のように "停止"を意味する場合は、それがデフォルトの処理であるという信号はありません。プロセスは、選択した信号に応じてそのような動作を提供できますが、任意のプロセスからその信号を呼び出すことはできません。

一方、操作を一時的に中断する意味で「停止」し、そのような停止から再開する意味で「開始」する場合は、SIGSTOPSIGCONTがあります。デフォルト取り扱いで十分です。しかし、このような意味でのプロセスの停止は、フォアグラウンド(フォアグラウンドの場合)から取り除かれず、プロセスがそれらのシグナルをブロック、無視、または独自の処理を提供する可能性があることに注意してください。

0

killで信号を送信できます。

kill -s <SIGNAL> <PID> 

は、PID <PID>とプロセスにシグナル<SIGNAL>を送信します。

停止して続行するには、SIGSTOPSIGCONTを使用できます。これは、基本的にCtrl-Zを押して端末のプログラムを一時停止するのと同じように機能します。

関連する問題