問題タブ [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.
amazon-ec2 - EC2 上の Apache Server 2.4 が「SIGTERM のシャットダウンをキャッチしました」
EC2 の m3.large インスタンスで amazon linux を使用しています。私のApacheサーバーがシャットダウンされる前に、これらのログがありました:
以上です。httpd サービスがシャットダウンされました。
ここで私が嗅いでいるのは、何人かの人々が GET リクエストで CGI スクリプトを実行してサーバーにアクセスしようとしているということです。
スクリプトが見つからないか、stat できません: /var/www/cgi-bin/hi
ここで、悪用の試みでない限り、「こんにちは」は一体何を意味するのでしょうか?
また:
ディレクトリをスクリプトとして呼び出そうとします: /var/www/cgi-bin/
それらはすべて同じ IP、173.45.100.18 から来ています。
私は DDoS やその他の悪意のある攻撃を受けているのでしょうか、それとも不可解なことが起こっているのでしょうか?
shell - デフォルトの CMD がシェル スクリプトの場合、Docker 停止終了コード -1
Supervisord を使用して Docker で tomcat コンテナーを構築しています。Dockerfile のデフォルト コマンドが
docker stop コマンドをディスパッチすると、コンテナーは終了コード 0 で正常に終了します。
しかし、代わりに私が持っている場合
そしてrun.shで、
docker stop コマンドを実行すると、終了コード -1 が返されます。ログを表示すると、supervisord が終了要求を示す SIGTERM を受信していないようです。
sigterm を受信して正常に終了する以前のログとは対照的です。
どんな助けでも感謝します。
ありがとう、カーシック
更新:
Supervisord.conf ファイル
linux - SIGKILLまでの時間
SIGKILL を送信する前に、 SIGTERM を受信したときにアプリケーションが終了するのにどれくらいの時間がかかるかを調べようとしましたか?
これらの信号に関する私の知識は非常に低いです。私は Stackoverflow の提案された回答でその一部を読みましたが、プロセスが SIGTER 化される前に「およそ」どのくらい存続できるかを垣間見ることはできません。
編集:たとえば、OSのシャットダウンを意図的にブロックする問題を作成したとしましょう(おそらくそれがwhile(1)
できるでしょうか?)
標準の Linux ディストリビューション、たとえばカーネル 3.x の Ubuntu で、MMI を使用しないプロセスの答えを探しています。
待ち時間は無いと思います。プロセスが消えると、システムはリソースを解放する時間を与えます。それ以外の場合、システムはそれを殺します。
swift - Thread1: IOS シミュレーターでハードウェアを変更するときに (迅速に) SIGTERM を通知します。
私の迅速なアプリケーションは、特定の IOS デバイス用に設定されており、IOS シミュレーターで正常に動作します。
ただし、IOS シミュレーターでハードウェアを変更すると、swift Thread1: signal SIGTERM でエラーが発生します。
IOS デバイスの iPhone 6 に迅速に設定できます。IOS シミュレーターは iPhone 6 を実行しますが、他のハードウェア (iPhone 4S など) に変更することはできません。IOS デバイスの iPhone 4S に swift を設定できます。IOS シミュレーターは iPhone 4S で正常に動作しますが、ハードウェアを変更するとエラーが発生します (以前は正常に動作していた iPhone 6 など)。
したがって、迅速なアプリケーションロジックが正しいと確信しています。
どうすればこれを解決できますか?
r - R でシグナルをトラップできますか?
SIGINT
bashではSIGKILL
、、、などをトラップできSIGTERM
ます。これにより、プログラムが予期せず停止した方法に応じて、さまざまなことができます。
Rでこれを行う方法はありますか?
c - sigaction 関数で SIGTERM をトラップできない
プログラムをコンパイルしました。それを開始して待っています。他のターミナルを開き、実行中のプログラムをコマンド「kill pid」または「kill -15 pid」または「kill -SIGTERM pid」で強制終了します (PID を実際のプロセス ID に置き換えます)。強制終了されたプログラムは終了しますが、SIGTERM をトラップして "done." を出力することはできません。
ここにコードをコピーします: https://airtower.wordpress.com/2010/06/16/catch-sigterm-exit-gracefully/。
いかがなさいましたか?すべての回答に感謝します。
gdb - GDB を使用して SIGTERM をデバッグする
SIGTERM のデバッグについて、stackoverflow でいくつかの質問を検索しましたが、必要な情報が得られませんでした。おそらく、私はまだこの問題に慣れていません。
私のプログラムは、コア ダンプなしで SIGTERM シグナルで終了しました。これを追跡する方法がわかりません。私の質問は、GDB でこの問題をデバッグする一般的な方法は何ですか?
ありがとう。
python - Celery ワーカーで Heroku SIGTERM をキャプチャしてワーカーを正常にシャットダウンする
私はこれについて多くの調査を行ってきましたが、これに対する良い答えがまだどこにも見つかっていないことに驚いています。
Heroku で大規模なアプリケーションを実行しています。処理に非常に長い特定のセロリ タスクがあり、タスクの最後に結果を保存します。Heroku に再デプロイするたびに、SIGTERM (そして最終的には SIGKILL) が送信され、実行中のワーカーが強制終了されます。キューに入れられたタスクを失う代わりに、最終的に必要な結果を保存できるように、ワーカー インスタンスが正常にシャットダウンし、後で処理するためにキューに再登録する方法を見つけようとしています。
ワーカーに SIGTERM を適切にリッスンさせる方法が見つかりません。私が得た最も近いものは、python manage.py celeryd
直接実行するときは機能しますが、フォアマンを使用してHerokuをエミュレートするときは機能しません。
foreman 内で実行されているこのセロリ タスクを開始して Ctrl+C を押すと、次のようになります。
KeyboardInterrupt
したがって、セロリの例外も、SystemExit
他の投稿で見た例外も、SIGTERM を適切にキャッチしてワーカーをシャットダウンしないことは明らかです。
これを行う正しい方法は何ですか?