스크립트 자체가 병렬로 실행되는 것을 방지하기 위해 bash 스크립트를 잠그고 있습니까?

스크립트 자체가 병렬로 실행되는 것을 방지하기 위해 bash 스크립트를 잠그고 있습니까?

flock나는 그것을 알고 cron 작업에서 실행할 때 사용됩니다 solo(차이는 확실하지 않습니다). 그러나 스크립트 자체 내에서 병렬 실행을 방지할 수 있습니까?

답변1

Ipor Sircer가 말했듯 lckdo이 어쩌면 그것이 올바른 선택일 수도 있습니다.

bash스크립트 에서는 다음과 같이 보일 수 있습니다. $BASHPID는 실행 중인 스크립트의 PID입니다. 이를 파일에 저장하고 존재하는지 확인할 수 있습니다(또는 PID가 포함된 파일이 여전히 활성 상태인지 확인하는 것이 더 좋습니다).

#!/usr/bin/env bash

PIDFILE="/foo/bar/script.pid"

# script running?
[[ -s $PIDFILE ]] && exit

# no, create pidfile
echo $BASHPID > $PIDFILE


# .. do some stuff

# delete pidfile
rm $PIDFILE

관련 정보