[解決済み] Bashスクリプトのインスタンスが1つしか実行されていないことを確認する最善の方法は何ですか?重複
2022-07-13 08:23:47
質問
与えられたスクリプトの1つのインスタンスのみが実行されていることを確認する最もシンプルで最良の方法は何ですか - Linux上のBashであると仮定して?
今のところ、私はやっています。
ps -C script.name.sh > /dev/null 2>&1 || ./script.name.sh
が、いくつかの問題があります。
- スクリプトの外側にチェックを置く
- 別々のアカウントから同じスクリプトを実行することができない - これは私が時々望むことです。
-
-C
プロセス名の最初の 14 文字のみをチェックします。
もちろん、自分でpidファイルの処理を書くこともできるのですが、簡単な方法があるはずだと感じています。
どのように解決するのか?
スクリプトがすべてのユーザーで同じである場合、スクリプトに
lockfile
のアプローチになります。ロックを取得した場合はそのまま進み、そうでない場合はメッセージを表示して終了します。
例として
[Terminal #1] $ lockfile -r 0 /tmp/the.lock
[Terminal #1] $
[Terminal #2] $ lockfile -r 0 /tmp/the.lock
[Terminal #2] lockfile: Sorry, giving up on "/tmp/the.lock"
[Terminal #1] $ rm -f /tmp/the.lock
[Terminal #1] $
[Terminal #2] $ lockfile -r 0 /tmp/the.lock
[Terminal #2] $
その後
/tmp/the.lock
が取得された後は、あなたのスクリプトだけが実行可能な状態になります。終了したら、ロックを解除してください。スクリプトの形式では、次のようになります。
#!/bin/bash
lockfile -r 0 /tmp/the.lock || exit 1
# Do stuff here
rm -f /tmp/the.lock
関連
-
rsyncとinotfiyの組み合わせでリアルタイムバックアップ問題を実現
-
[解決済み] Bashスクリプトでスクリプトファイル名を知るには?
-
[解決済み] Bashスクリプトのソースディレクトリをスクリプト自体から取得するにはどうすればよいですか?
-
[解決済み] 好ましいBashのシェバングとは?
-
[解決済み] bashスクリプトでset -eはどういう意味ですか?
-
[解決済み] Bashスクリプトで、ある条件が発生したらスクリプト全体を終了させるにはどうしたらいいですか?
-
[解決済み] BashスクリプトからOSを検出する方法は?
-
[解決済み] 最初の引数を除くすべての引数を処理する(bashスクリプトの場合)
-
[解決済み】Bashスクリプトでクリップボードにパイプを接続する
-
[解決済み] シェルスクリプトのインスタンスが同時に1つだけ実行されるようにする簡単な方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
virtualboxが仮想マシンを開けない場合は?linuxがvirtualboxにアクセスできない時の解決策
-
Linux Mintシステムでプログラムをアンインストールするには? Linux で不要なアプリケーションをアンインストールするためのヒント
-
deepin20のデスクトップアイコンのスタイルを変更する方法は?deepinのアイコンテーマを変更するためのヒント
-
sudo が sudo として表示される: setuid root である必要がある
-
[解決済み] Linuxでデータファイルから最初の列(実際には行名)を削除する方法は?
-
[解決済み] IOCTL Linuxデバイスドライバ [終了しました]
-
[解決済み] Linuxで特定のテキストを含むすべてのファイルを検索するにはどうすればよいですか?
-
[解決済み] Linux で grep を使ってファイル名だけを表示するにはどうしたらいいですか?
-
[解決済み] 特定のファイル/フォルダを除外してディレクトリをtarするシェルコマンド
-
[解決済み] シェルスクリプトのインスタンスが同時に1つだけ実行されるようにする簡単な方法