/Cobra를 사용하여 백그라운드에서 다양한 작업을 실행해야합니다.BASH에서 시작한 프로세스를 포함하여 BASH에서 프로세스를 세는 방법?
저는 32 개의 코어를 가지고 있고, 다른 커플을 자유롭게하고 싶습니다. 그렇지 않으면 내 머신이 다른 것을하기에는 너무 느려집니다. 이 코드에서
나는 그러나, "PS"적시에 정보를 제공하는 표시되지 않습니다 PS를 사용하여 프로세스의 수를 확인 만 30의 최대 수를 시작합니다. 3 초를 기다리지 만 ps는 때때로 일치하는 프로세스의 수를 선언합니다. 이것은 아마도 그들은 단지 백그라운드에서 시작하고있을 때입니다.
ps (또는 otehrwise)에서 더 좋은 대답을 얻는 방법이 있습니까? 내가 가지고있는 유일한 해결책은 더 오래자는 것이지만, 그것은 약간 무겁습니다.
#!/bin/sh
#set -x
while true
do
NUMRUNNING=`ps | egrep FormsApplic | wc -l`
JOBS=`cat jobs.lst | wc -l`
if [ $JOBS -gt 0 ]
then
MAXSTART=$((30-$NUMRUNNING))
NUMTOSTART=$JOBS
if [ $NUMTOSTART -gt $MAXSTART ]
then
NUMTOSTART=$MAXSTART
fi
for ((i=1;i<=$NUMTOSTART;i++))
do
JOB=`head -n1 jobs.lst`
echo $JOB >> /tmp/jobsStarted
sed -i 1d jobs.lst
/cobra $JOB &
done
fi
LASTNUMRUNNING=$NUMRUNNING
sleep 3
done
모든 운영 체제에'/ proc' 파일 시스템이있는 것은 아닙니다. – chepner