HOME環境変数を使用して、並列実行の状態を格納するCLIプログラムを分離します。

HOME環境変数を使用して、並列実行の状態を格納するCLIプログラムを分離します。

背景:"$HOME"CLIユーティリティを使用して、LinuxおよびUnixの環境変数の場所を使用して、ユーザーのホームディレクトリにいくつかのステータスを保存します。プログラムはJenkinsジョブ内のシェルスクリプトで実行されます。異なるプログラム入力を使用して両方のジョブを実行するたびに、プログラムの状態が$HOMEディレクトリに保存されるため、競合が発生します。

実行中のジョブからユーティリティを分離しようとしたが、限られ$HOMEたテストに適しているように見える環境変数を変更する方法を考えました。

if [ -d "newhome" ]; then
  echo "newhome dir already exists"
  rm -r newhome 
fi
mkdir newhome
old_home="$HOME"
HOME="./newhome"

# rest of shell script is here

HOME="$old_home"

同じユーティリティを使用する複数のジョブがある場合も、同じジョブが複数回同時に実行される場合もあります。この変化は、他の環境、他の職業などに影響を与えますか?それとも別の方法を使用する必要がありますかchroot

答え1

スクリプトが実際にスクリプト内の静的文字列を削除するというnewhome事実以外は、この回避策に深刻な問題はありません。

newhome同じスクリプトを実行する同時プロセスがある場合、ディレクトリを削除することは問題になります。これは、古いプロセスがまだディレクトリを使用している間に新しいプロセスによってディレクトリが削除される可能性があるためです。

関連情報