스크립트가 이미 실행 중인지 알고 싶습니다. 주기적으로 살펴보면 ps
다른 순서로 다른 매개변수를 가져오기 때문에 잘리지 않습니다.
따라서 함수는 다음을 수행해야 합니다.
check_already_running(){
if [ `ps -ef| grep $script_name_with_arguments | wc -l ` -gt 1 ]
then
echo "already running"
exit 1
else
echo "ok"
fi
}
예를 들어, 다음과 같이 실행했다고 가정해 보겠습니다 ./test.sh -a 2 -c 4
.
server:/tmp >./test.sh
ok
server:/tmp >./test.sh -a
ok
server:/tmp >./test.sh -a 2 -c 4
already running
server:/tmp >./test.sh -a 2 -c 4
already running
server:/tmp >./test.sh -c 4 -a 2
already running
마지막 두 가지 예는 검사를 더 어렵고 길게 만드는 것 같으므로 2가지 옵션을 제공할 수 있다면 하나는 명령을 실행할 수 있을 만큼 정확하고 다른 하나는 사용자가 동일한 매개변수를 다른 순서/추가 간격으로 보내는 경우입니다.