「kill」コマンドでシグナル名を送信する正しい方法または推奨される方法は何ですか?

「kill」コマンドでシグナル名を送信する正しい方法または推奨される方法は何ですか?

私はコマンドの使い方に関する多くのチュートリアルを読んでいますkill最大3つの方法

kill -15 <pid>
kill -SIGTERM <pid>
kill -TERM <pid>

スクリプトの目的とMacosの移植性のために、コード番号は使用されません。kill -lMacosは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に送信しますか? (後者ですが、ご迷惑をおかけする方もいらっしゃいます。)SIGTERMSIGKILLSIG

POSIX は、いくつかのデジタル信号値を指定します。

数字 シグナル
0 「空」信号
1 HUP
2 INT
サム QUIT
6 ABRT
9 KILL
14 ALRM
15 TERM

おすすめ記事