
私はコマンドの使い方に関する多くのチュートリアルを読んでいますkill
。最大3つの方法
kill -15 <pid>
kill -SIGTERM <pid>
kill -TERM <pid>
スクリプトの目的とMacosの移植性のために、コード番号は使用されません。kill -l
MacosはLinuxとは異なるためです。ここに再生信号名を入力してください。
質問
- 正しい転送方法または推奨される転送方法は何ですか?信号名コマンドで
kill
?
私の言葉は:
- 特別利益団体何または何?
なぜ?この二つの方法が存在する理由はちょうど一つでしょうか?ある方法を他の方法よりも使用しなければならない説得力のある理由はありますか?
環境
この状況は、Ubuntuデスクトップ/サーバーとFedoraワークステーション/サーバーに適用されます。
答え1
最も携帯性に優れたバリエーションは次のとおりです。
kill -s TERM -- …
指定フォームですPOSIXには拡張はありません。:-s
後にシグナル名が続きます(定義されている場合)存在するsignal.h
、プレフィックスなしSIG
、または「空」信号の場合は0(指定された識別子を持つプロセスが存在することを確認するために使用されます)。
SIGTERM
基本的な信号なので、次の標準形式を使用してプロセスまたはプロセスグループに送信できます。
kill <pid>
kill -- -<pgid>
通常、Linuxでは、ほとんどの実装kill
(シェル組み込み機能を含む)は、プレフィックスの有無にかかわらず数字または名前のシグナルを受け入れます。注目すべき例外には、Debian ベースのディストリビューション設定SIG
に含まれるダッシュの組み込みが含まれます。kill
/bin/sh
ヒリバーンシェル。
使用するツールがどの形式をサポートしていても、特定の形式を他の形式よりも使用する必要がある「強制」理由はありません。私は個人的に数値形式があいまいに見えるので、使用を避けたいと思います。プロセスグループ9と15にkill -9 -15
送信しますか、それともプロセスグループ15に送信しますか? (後者ですが、ご迷惑をおかけする方もいらっしゃいます。)SIGTERM
SIGKILL
SIG
POSIX は、いくつかのデジタル信号値を指定します。
数字 | シグナル |
---|---|
0 | 「空」信号 |
1 | HUP |
2 | INT |
サム | QUIT |
6 | ABRT |
9 | KILL |
14 | ALRM |
15 | TERM |