2016-04-26 11 views
-1

私はLinuxのスターターです。 私はマルチスレッドアプリケーションをサーバー上で実行しています。アプリを停止するには、コマンドapplication_name stopを実行しました。アプリが停止しました。しかし、後で私はサブプロセスが実行中であり、データベース上で処理していることに気付きました。他のアプリケーションがサーバー上で停止できないため、再起動できません。サーバーを再起動せずにこれらのサブプロセスを強制終了するにはどうすればよいですか?Linuxはすでに停止している親のサブプロセスを終了します

+2

'killall processname' –

答えて

1

はこれのいくつかは、あなたが使用しているものに応じて、アプリケーションサーバを介して管理することができます。 WebLogic、GlassFish、JBoss、Tomcatを使用すると、特定のアプリケーションをシャットダウンしたり、サーバ上の他のアプリケーションを中断することなく削除して再インストールすることができます。

application_name stopは非常にあいまいです。この種のシャットダウンを行うためのシェルラッパーのように聞こえます。

Joannasが述べているように、kill $PGID(または明示的にkill -15 $PGID)を使用することをおすすめします。これにより、プログラムされた方法に応じて、サブプロセスに適切にシャットダウンする機会が与えられます。その後、ps aux(ダッシュは必須ではありません)を使用して、サブプロセスが終了したかどうかを確認します。それでも数秒以上続く場合は、許してくださいkill -9 $PGID

PS。これらのサブプロセスを維持している場合は、デザインを再考したり、スレッドをアプリケーションと一緒にシャットダウンすることが予想されるので、スレッドを使用したりすることができます。

1

あなたの質問が正しい場合: コマンドpsを実行すると、実行中のすべてのプロセスを見つけることができます。実行中のすべてのプロセスを表示するには、-auxフラグを使用します。

ps -aux 

プロセスグループID(PGID)を使用して、プロットを削除できます。

kill $PGID 
Or 
kill -9 $PGID 

詳細はを参照してください:https://unix.stackexchange.com/questions/124127/kill-all-descendant-processes

関連する問題