lsof 명령을 사용하여 setup.sh 인스턴스를 하나만 실행하며 인수 값이 없으면 올바르게 작동합니다. 하지만, 예를 들어 setup.sh에서 인수를 전달해야했습니다.lsof linux 명령 인수 값을 사용하여 실행중인 인스턴스를 계산합니다.
setup.sh 기계 1 setup.sh machine2의 setup.sh 머신 3
setup.sh 기계 1 다시 같은 명령이 실행을 실행하는 경우 setup.sh 기계 1이 완료 될 때까지 그래서, 그것은 대기합니다. 나는 lsof가 프로세스를위한 것이고 대기 로직에 대한 다른 좋은 제안이 될 수는 없을 것이라고 생각한다.
내가 lsof 명령에 구문 오류를 전달하는 몇 가지 인수를 전달하려고하면 아래에서 시도했지만 행운이 없습니다. 내 목적은 machine1을 사용하는 인스턴스 하나만 실행되며 setup.sh를 machine1 인수와 함께 실행하려고하면 대기해야합니다. 다른 파일 잠금/대기 논리?
if ([[ $(lsof -t \setup.sh 'machine1'| wc -l) > 1 ]]); then
if ([[ $(lsof -t '\setup.sh machine1'| wc -l) > 1 ]]); then
if ([[ $(lsof -t "\setup.sh machine1"| wc -l) > 1 ]]); then
작업 : if ([[ $(lsof -t \setup.sh| wc -l) > 1 ]]); then
echo -e "\tWaiting for 2 minutes...\n"
sleep 2m
else
echo -e "\tFree now to run setup.sh\n"
fi
가 작동하지 않습니다 (구문 오류) :
if ([[ $(lsof -t \setup.sh| wc -l) > 1 ]]); then
echo -e "\tWaiting for 2 minutes...\n"
sleep 2m
else
echo -e "\tFree now to run setup.sh\n"
fi
if ([[ $(lsof -t \setup.sh machine1| wc -l) > 1 ]]); then
echo -e "\tWaiting for 2 minutes...\n"
sleep 2m
else
echo -e "\tFree now to run setup.sh\n"
fi
왜'setup.sh' 전에 슬래시를 넣었습니까? – Inian
스크립트가 현재 위치하거나 실행중인 경로입니다. –