저는 zsh
고에너지 물리학에서 일부 데이터 분석을 자동화하기 위해 분리 모드에서 특정 이름을 가진 여러 화면을 시작하고 그 안에서 특정 프로세스를 실행하는 스크립트를 만들었습니다. 그러나 때때로 다음과 같은 오류가 발생합니다.
No screen session found.
표시할 특정 패턴을 인식하지 못하고 error
무작위로 발생하는 것 같습니다. 제 목표는 프로그램을 다른 방식으로 여러 번 실행하는 것입니다. command-line arguments
때로는 이 오류가 두 번째 실행에서 나타나기도 하고 때로는 세 번째 팝업에서 나타나기도 합니다. 분석을 수행하려면 루프 내에 정의된 화면에 특정 명령을 보내야 합니다 for
. 코드는 아래와 같이 표시됩니다.
#! /bin/zsh
### Script for running everything in screens ###
### System argument screen name suffix ###
echo You have the following screens running:
screen -ls
#echo Press any key to proceed. NOTE THAT YOUR OTHER SCREENS WILL GET KILLED!
#read
#pkill -15 -U arisevon screen ## We make sure that no screens are running for now
bkgarr=(TopJets BosonJets DiBoson TTbar)
sigarr=(NM1 NM2 NM3 Scenario4 Scenario6)
puarr=(50PU 140PU)
lumarr=(30 300 3000)
echo Please type 1 for 50PU samples and 2 for 140PU samples
read PU
if [[ $PU -ne 1 && $PU -ne 2 ]] ; then
echo You have to enter 1 or 2
return 1
fi
echo Please type 1 for 300fb-1 and 2 for 3000fb-1
read lum
if [[ $lum -ne 1 && $lum -ne 2 ]] ; then
echo You have to enter 1 or 2
return 1
fi
if [ $PU = 1 ]; then
let "lum = $lum + 1"
#echo $lum
fi
ex NEWrunReader.py <<EOEX
:43s/Lumi.*/Lumi=$lumarr[lum]/
:x
EOEX
echo Compiling the reader file!!!
root -l << EOF
.L readerSummerStd.C+
EOF
echo Press any key to proceed or Ctrl+C to abort!
read
for index in $bkgarr
do
screen -dmS "${index}_${lumarr[lum]}_${1}"
#screen -S $index -p 0 -X stuff "$(typeset -p bkgarr)"$'\r'
screen -S "${index}_${lumarr[lum]}_${1}" -p 0 -X stuff "./NEWrunReader.py SummerStd $puarr[PU]_$index $1 >& "${index}_${lumarr[lum]}_${1}".txt &"$'\r'
done
for sigind in $sigarr
do
screen -dmS "${sigind}_${lumarr[lum]}_${1}"
#screen -S $sigind -p 0 -X stuff "$(typeset -p bkgarr)"$'\r'
screen -S "${sigind}_${lumarr[lum]}_${1}" -p 0 -X stuff "./NEWrunReader.py SummerStd $puarr[PU]_$sigind $1 >& "${sigind}_${lumarr[lum]}_${1}".txt &"$'\r'
done
return 0