静止プロセスがシェルの子プロセスであることを確認するシェル機能は何ですか?

静止プロセスがシェルの子プロセスであることを確認するシェル機能は何ですか?

Ctrl + Zで一時停止したプロセスがあるかどうかを示すインジケータをPS1に追加したいと思います。これには、この状況を確認する機能が必要です。私はこれについてどこから考えるべきかさえ知りません。 Googleは私を失望させた。どんなアイデアがありますか?

ベストアンサー1

「Ctrl + Zで中断されたプロセス」は、実際には「このシェルの子プロセスによって中断されたプロセス」のサブセットであり、追跡がより簡単です。これは、中断されたバックグラウンドジョブがあることを意味します。

zshでは確認できますjobstates大量に

if ((${(M)#jobstates:#suspended:*} == 0)); then
  echo There are no suspended jobs
else
  echo There are ${(M)#jobstates:#suspended:*} suspended jobs
fi

Bashまたはzshでは、保留jobs -s中のジョブのみがリストされます。

echo "There are $(jobs -s | wc -l) suspended jobs"

おすすめ記事