Process
使用 ps 更新正在執行的作業的 Bash 列表
我需要並行執行一組計算密集型任務。我試圖做的是維護與正在執行的作業相對應的 pid 列表並更新正在執行的作業列表,
ps
但我在命令擴展時遇到了麻煩。基本上我有一個正在執行的作業列表,並希望使用
ps
. 此列表保存為由空格分隔的整數字元串(pid)。以下是我想做的一個例子sleep 10 & pid=$! running="$running $pid" sleep 20 & pid=$! running="$running $pid" sleep 30 & pid=$! running="$running $pid" sleep 40 & pid=$! running="$running $pid" echo "Initial list of jobs" echo "$running" sleep 20 echo "Jobs still running after 20 seconds" echo $(ps -p $running -o pid= | tr -s "\n" " ")
但我得到的只是
Initial list of jobs 30815 30816 30817 30818 Jobs still running after 20 seconds error: process ID list syntax error ... bla bla bla ps usage...
代替
running="$running $pid"
經過
running="$running,$pid"
在第一種情況下 ps 被呼叫
ps -p 12 34 45 -o pid=
而在第二
ps -p 12,34,45 -o pid=