Mutexクラスを使って多重起動制御を行う
Windowsだと、普通にnew Mutex(false, "hogehoge");
とすれば、多重制御処理を書けてしまいますが、Linuxだと発動したり発動しなかったり。
多重制御が効く
/usr/local/bin/Hoge/Hoge &
/usr/local/bin/Hoge/Hoge &
多重制御が効かない
0 0 * * * root /usr/local/bin/Hoge/Hoge
5 0 * * * root /usr/local/bin/Hoge/Hoge
Mutexクラスで多重起動制御できるようにする
Global\
文字列を付けるだけみたいです。
var mutex = new System.Threading.Mutex(false, @"Global\\Hoge");
try {
handle = mutex.WaitOne(0, false);
}
catch( System.Threading.AbandonedMutexException) {
handle = true
}
if( !handle ) {
// 多重起動
return;
}
cronでもちゃんと制御してくれました!!
- dotnet core 3.1 / centos7, centos8 で確認