BashでPIDと作業仕様を使用するのに重複する部分はありますか?

BashでPIDと作業仕様を使用するのに重複する部分はありますか?

BashでPIDと作業仕様を使用するのに重複する部分はありますか?

私のスクリプトでは、.を使用してコマンドのPIDを変数に保存します$!。次に、disownPID を使用して呼び出して、シェルのアクティブなタスクのリストからタスクを削除します。後でスクリプトはkill状況に応じてプロセスを終了することも、終了しないこともあります。これの目的は、見苦しい「作業が終了しました」というメッセージが端末に表示されず、私のスクリプトのきちんとした出力が見えないようにすることです。

うまくいきますが、PIDとjobspecの違いについて混乱しています。

$! - the PID of the most recent background command.
disown [-ar] [-h] [jobspec ...]
kill [-s sigspec | -n signum | -sigspec] [pid | jobspec]

disown作業仕様が必要ですが、PIDを提供します。 jobspecが有効なジョブを指定しない限り、0が返されることをman bash示します。disownPIDを指定すると0が返されるので、すべてが大丈夫です。

jobspec の検索では、man bashPID が一般に jobspec の代わりに使用できるという内容は記載されていませんdisown

PIDとjobspecは同じではありませんが、使い方が重なる部分がありますか?そうでなければ、なぜ私のコードはうまくいくのですか?disown作業仕様の代わりにPIDを取得し、それを文書化しないのと同じくらい簡単ですかman bash

ありがとうございます。

編集する

chorobaの言葉は正しいです。disownjobspecの代わりにPIDを使用できるのは本当のようですdisown。これで、GNU Bashの2つの異なるバージョンをテストしてこれを確認しました。

GNU bash, version 4.3.11(1)-release (x86_64-pc-linux-gnu) [On Linux Mint]
GNU bash, version 4.3.30(1)-release (x86_64-pc-linux-gnu) [On Debian]

GNUは(私の知る限り)文書化しませんが、Linux文書化プロジェクトは3番目の文で文書化します。ジョブ制御コマンドページ。

私はGNU Bashのマニュアルページの管理者にシェル組み込みdisownコマンドセクションのエントリの変更を提案する電子メールを送りました。

From: disown [-ar] [-h] [jobspec ...]
To:   disown [-ar] [-h] [jobspec | pid] ...

今、彼はエラーを確認して変更しました。

ベストアンサー1

これは文書化されていない機能のようですdisown。 BashはPIDを作業仕様として誤解することはできません。作業仕様は常に%

おすすめ記事