Bash

用於檢查是否有一個掛起的程序是這個 shell 的子程序的 shell 函式?

  • October 23, 2019

我想給我的 PS1 添加一個指示器,顯示是否有程序被 ctrl+z 掛起。為此,我需要一個能夠檢查這種情況的函式。我什至不知道從哪裡開始考慮這個問題。Google讓我失望了。有任何想法嗎?

“使用 Ctrl+Z 掛起的程序”實際上是“作為這個 shell 的子程序的掛起程序”的一個子集,而且更容易跟踪:這意味著有一個掛起的後台作業。

在 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"

引用自:https://unix.stackexchange.com/questions/251049