問題タブ [sigterm]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
bash - プロセスを正常にシャットダウンするには、どのような順序でシグナルを送信すればよいですか?
別の質問のこの回答に対するコメントで、コメント投稿者は次のように述べています。
どうしても必要な場合を除き、kill -9 を使用しないでください。SIGKILL はトラップできないため、強制終了されたプログラムは一時ファイルを消去するなどのシャットダウン ルーチンを実行できません。最初に HUP (1)、次に INT (2)、次に QUIT (3) を試してください。
については原則として同意しますSIGKILL
が、残りはニュースです。によって送信されるデフォルトのシグナルが であることを考えるとkill
、SIGTERM
任意のプロセスを正常にシャットダウンするために最も一般的に期待されるシグナルであると思います。SIGHUP
また、デーモンに「構成ファイルを再読み込みする」ように指示するなど、終了しない理由で使用されているのを見てきました。そして、SIGINT
(通常は Ctrl-C で得られるのと同じ割り込みですよね?) 本来あるべきほど広くサポートされていないか、かなり不自然に終了しているように思えます。
SIGKILL
それが最後の手段であることを考えると、任意のプロセスを可能な限り正常にシャットダウンするには、どのシグナルをどのような順序で送信する必要がありますか?
可能であれば、裏付けとなる事実 (個人的な好みや意見を超えて) または参照を使用して回答を裏付けてください。
注: bash/Cygwin を考慮したベスト プラクティスに特に関心があります。
編集:これまでのところ、INT や QUIT については誰も言及していないようで、HUP についての言及は限られています。これらを整然としたプロセスキルに含める理由はありますか?
c - SIGTERM で動的に割り当てられた変数を解放するには?
私はこのようなコードに取り組んでいます
プロセスがフォークされると、すべての変数も複製されます。通常、var のすべてのコピーが解放されます。
によってエラーが発生した場合はfork()
、作成されたすべてのプロセスにシグナル SIGTERM を送信します。そして、var を解放してアプリケーションを終了する SIGTERM のシグナル ハンドラを作成する必要があります。ただし、free() はそうではないsignal safe function
ので、呼び出すべきではありません。しかし、その変数を free() する方法は?
あなたの答えに感謝します...
編集: valgrind は、まだ到達可能な変数も示しています:
bash - プロセスを生成し、SIGTERM で子を終了するシェル スクリプト
バックグラウンドでいくつかの実行時間の長いプロセスを生成し、その後ハングアップするシェル スクリプトを作成したいと考えています。SIGTERM を受信したら、すべてのサブプロセスも終了させたいと思います。
基本的には「マスタープロセス」が欲しい。
これが私がこれまでに得たものです:
上記のスクリプトは で失敗しtrap: 10: SIGTERM: bad trap
ます。
編集:Ubuntu 9.04を使用しています
windows - SIGTERMの送信/キャッチのWin32APIアナログ
POSIX OSには、killでシャットダウンするために処理するシグナルを送信できるシグナルAPIがあり、sigactionでキャッチして、必要なことを実行できます。
ただし、Win32はPOSIXシステムではないため、次のようになります。
- たとえば、「タスクマネージャ」の「プロセスの終了」から発生する可能性のあるシャットダウンイベントを処理するにはどうすればよいですか?
- Win32アプリケーションにシャットダウン信号を送信するための標準APIは何ですか?
私はGUIについて話しているのではなく、うまくシャットダウンされるべきTCP/IPサーバーについて話しているのです。これはWindowsサービスのようには実行されません。
linux - Apacheサーバーがクラッシュし続け、「SIGTERMをキャッチし、シャットダウンしました」
これはちょうど3週間ほど前に起こり始めました。私のウェブサイトのコンテンツは変更されていません。MySQLをバックエンドとして使用しているphpBBフォーラムです。
1年以上何も変わっていませんが、最近は2日ごとにサーバーがシャットダウンし、まったくアクセスできなくなりました。サービスプロバイダーに、マシンを物理的に再起動するように通知する必要があります。
ログで見つけたこれらのSIGTERMエラーに関連しているようです。問題は、この分野での私のスキルが不足しているため、これらの種類のものを修正する方法や根本的な原因を見つける方法がわからないことです。
誰かが何が起こっているのか考えがありますか?
Apache / 2.2.3(CentOS)
20051115
Linux 2.6.18-028stab057.4#1SMP金8月1日10:47:59MSD 2008 x86_64
エラーログから:[Sun Nov 01 15:18:53 2009] [notice] SIGTERMをキャッチし、シャットダウンしました
それが私の問題の原因であるかどうかは完全にはわかりませんが、それは良いことのようには思えません。
必要に応じて、より多くのログ情報を投稿できます
c# - Windowsにposix SIGTERMの代替手段はありますか? - (コンソール アプリケーションの穏やかなキル)
GUI アプリケーションによって実行されるコンソール デーモンがあります。GUI アプリケーションが終了したら、デーモンも停止したいと思います。
Windowsで穏やかに行うにはどうすればよいですか?
Linux では、SIGTERM を使用するだけですが、ウィンドウにコンソール アプリケーション用の同様のメカニズムはありますか?
もう少し詳しく説明すると、デーモン アプリは Python で作成され、GUI は C# および Windows フォームで作成されています。
python - サーバーの再起動後にデーモンのためにぶら下がっている PID ファイル
プログラムの並列実行を防ぐために PID ファイルを使用するデーモンがいくつかあります。SIGTERM をトラップし、PID ファイルを含む必要なクリーンアップを行うシグナル ハンドラをセットアップしました。「kill -s SIGTERM #PID」を使用してテストすると、これはうまく機能します。ただし、サーバーを再起動すると、PID ファイルがまだぶら下がっていて、デーモンの起動を妨げています。サーバーのシャットダウン時に SIGTERM がすべてのプロセスに送信されることを理解しています。デーモンで別のシグナル (SIGINT、SIGQUIT?) をトラップする必要がありますか?
python - Linux での Python / GTK でのユーザーのログアウト / シャットダウンの検出 - SIGTERM/HUP が受信されない
OK、これはおそらく難しい問題です。キャッチ/制御できない X Window エラーが原因でランダムにクラッシュする pyGTK アプリケーションがあります。
そのため、クラッシュを検出するとすぐにアプリを再起動するラッパーを作成しました。ユーザーがシステムをログアウトまたはシャットダウンすると、アプリはステータス 1 で終了します。しかし、一部の X エラーではそうなります。
だから私はシャットダウン/ログアウトをキャッチするために文字通り何かを試みましたが、成功しませんでした.これが私が試したことです:
これらのいずれも成功しません。システムのシャットダウンを検出する低レベルの方法はありますか? Google はそれに関連するものを見つけられませんでした。
方法があるに違いないと思いますよね?:/
編集: OK、もっとたくさん。
このシェルスクリプトを作成しました:
また、それを実行するための .desktop ファイルも作成しました。
通常、これにより、ログアウト時にtermファイルが作成され、&で開始されたときにhupファイルが作成されます。しかし、私のシステムではありません。GDM はスクリプトをまったく気にしません。再ログインしても、まだ実行中です。
も使用してみましたがshopt -s huponexit
、成功しませんでした。
EDIT2:
また、実際のコードに関する詳細情報を次に示します。全体は次のようになります。
流れは次のようになります。
ここで、シャットダウン時に 1 をstart program
返します。これは、ハナップが発生したか、親プロセスが終了したかのいずれかを意味します。主な問題は、これら 2 つのうちどちらが発生したかを把握することです。X エラーも 1 になります。シェルスクリプトでのトラップは機能しません。
実際のコードを見たい場合は、GitHub でチェックしてください:
http://github.com/BonsaiDen/Atarashii
c - Linuxで保留中のシステムシャットダウンを検出する方法は?
システムのシャットダウンを検出する必要があるアプリケーションに取り組んでいます。ただし、このイベントに関する信頼できる通知を受け取る方法は見つかりませんでした。
シャットダウン時に、アプリがSIGTERM
シグナルを受信し、その後にSIGKILL
. シャットダウン シーケンスの一部であるSIGTERM
かどうかを照会する方法があるかどうか知りたいですか?
それをプログラムで照会する方法があるかどうかは誰にもわかりません(C API)?
私の知る限り、システムは差し迫ったシャットダウンを照会する他の方法を提供していません。もしそうなら、それは私の問題も解決するでしょう。私も試してみましたrunlevels
が、変更はrunlevels
瞬時に行われるようで、事前の警告はありません。
java - SIGKILL Process.destroy()を使用してJavaでLinuxプロセスを強制終了するにはどうすればよいですか?
Linuxでは、java.lang.Processオブジェクト(実際に型指定されたjava.lang.UNIXProcess)でdestroy関数を実行すると、プロセスにSIGTERMシグナルが送信されますが、SIGKILLでそれを強制終了する方法はありますか?