スクリプト自体が並行して実行されるのを防ぐために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

おすすめ記事