如何從腳本本身內查找bash腳本的子進程的數量?查找子進程的數量
查找子進程的數量
回答
要獲得bash腳本的PID,您可以使用變量$$
。
然後,爲了獲得它的孩子,你可以運行:
bash_pid=$$
children=`ps -eo ppid | grep -w $bash_pid`
ps
將返回父PID的列表。然後grep
過濾所有與bash腳本的子項無關的進程。爲了得到孩子的數量,你可以這樣做:
num_children=`echo $children | wc -w`
其實你會得到將由1被關閉,因爲ps
數量將是bash腳本的孩子了。如果你不想算ps
作爲一個孩子的執行,那麼你可以解決這個問題有:
let num_children=num_children-1
UPDATE:爲了避免調用grep
,下面的語法可以使用(如果支持由ps
安裝的版本):
num_children=`ps --no-headers -o pid --ppid=$$ | wc -w`
'grep -w $ bash_pid'以防bash pid是子進程ID的子字符串。 – chepner 2012-07-18 13:21:16
@chepner好點!我會解決這個問題。謝謝! :) – betabandido 2012-07-18 13:22:01
不確定,但我認爲額外的過程是包含ps/grep管道的子shell。只是迂腐:) – chepner 2012-07-18 13:45:53
使用ps
與--ppid
選項選擇當前bash進程的孩子。
bash_pid=$$
child_count=$(ps -o pid= --ppid $bash_id | wc -l)
let child_count-=1 # If you don't want to count the subshell that computed the answer
(注:這需要Linux版本的ps
爲--ppid
我不知道是否有用於BSD ps
或不等價。)
您可以評估shell內建命令作業像:
counter = `jobs | wc -l`
計算作業,而不是進程。作業可以由多個進程組成。 – chepner 2012-07-18 13:31:04
等號周圍沒有空格。使用'$()'而不是反引號。 – 2012-07-18 13:53:16
您還可以使用p纖ep:
child_count=$(($(pgrep --parent $$ | wc -l) - 1))
使用pgrep --parent $$
可以獲取bash進程子項的列表。
然後使用wc -l
在輸出獲得的行數:$(pgrep --parent $$ | wc -l)
然後減去1(wc -l
報告1,即使pgrep --parent $$
爲空)
我喜歡:
num_children=$(pgrep -c -P$$)
它衍生只是一個過程中,您不必計算單詞或通過管道中的程序調整PID的數量。
實施例:
~ $ echo $(pgrep -c -P$$)
0
~ $ sleep 20 &
[1] 26114
~ $ echo $(pgrep -c -P$$)
1
- 1. 如何查找C中進程的子進程數?
- 2. 'su -c command'生成的子進程的數量(子進程)
- 3. 查找特定進程的子進程(UNIX)
- 4. SPARQL查找孫子的數量
- 5. 查找子向量0的
- 6. 查找後臺進程的進程ID
- 7. Unix中子進程的最大數量
- 8. 保持相同數量的子進程
- 9. 如何查找子視圖數量?
- 10. 檢查子進程
- 11. 查找GtkWidget的子程序
- 12. 我怎麼能找到產生大量子進程的前5個進程
- 13. 在oracle中檢查進程的進程,使用變量數組
- 14. 瓶子計數程序,開關語句查詢,查找最大數量
- 15. 測量CPU和子進程
- 16. 查找InstallShield服務/進程
- 17. 從Java中查找進程
- 18. 查找我自己.NET進程的所有子進程/查明給定進程是否屬於我自己的子進程?
- 19. 查找單調遞增的子數組的數量
- 20. 查找數字的因子
- 21. 在ColdFusion 8中對XML進行遞歸查詢以查找未知數量的子級子級別
- 22. 查找數量的字典
- 23. Python子進程找不到程序
- 24. 查找進程ID並將其分配給ubuntu中的變量
- 25. Excel VBA - 查找函數 - 查找變量
- 26. 查找數組中元素數量最大的子序列
- 27. Oracle並行查詢 - 如何找出產生的進程的實際數量?
- 28. 在進程仍在運行的情況下查找進程及其子進程的CPU時間
- 29. 子進程函數
- 30. 父進程如何找到導致其子進程死亡的進程的PID?
HM。遞歸? – 2012-07-18 13:22:23