Windows system >> Windowsの知識 >  >> Linuxシステムチュートリアル >> Linuxチュートリアル >> Linuxの非同期実行制御プログラム

Linuxの非同期実行制御プログラム

  

に群れコマンドを使用して最近、私は多くの場合、コンピュータが待機する必要性の多くを行う
、および作業を同時に行うことができる台湾の数にsshをする必要があります。例えば:彼らは上記の作業を確認した後に必要なアクションをするためには、完成された後1.、しかし、リモートコンピュータ(SSH認証でほとんどの時間)

に小さなファイルの更新パッケージ2.同時送信しながら、リモートコンピュータをしてみましょう続けます。
は、

私が過去にやっている:#前作のupdate_pkg_on_machine_1update_pkg_on_machine_2update_pkg_on_machine_3番号を...
の背後にある仕事を

これは作業が同時に完了することを保証しますが、それは非常に遅い&hellipですが、
< pは>別の可能な方法があります。#フロント作業update_pkg_on_machine_1&#038;&#038 update_pkg_on_machine_2; update_pkg_on_machine_3&#038;
の背後にあるスリープ10#...作業

この方法は、同時に動作しますが、することができますが、10秒の場合作業はまだ完了しておらず、次の作業は間違っている可能性があります。

仕事ができる秒数を習得するのは困難です。

作業状態を管理するためのflockの使用

私はオペレーティングシステムで作業していたときにミューテックスを学んでいましたが、flockはシェルで使用できるミューテックスです。私たちはのUbuntuの明快な説明に群れを見て


公式

群れの説明:NAMEflock - シェルスクリプト

SYNOPSISflock [-sxon] [-wタイムアウトからロックを管理します]ロックファイル[-c]コマンド...

群れ[-sxon] [-wタイムアウト] LOCKDIR [-c]コマンド...

群れ[-sxun] [-wタイムアウト] fdDESCRIPTIONThisユーティリティ(1)(1)SUと同様に、実行aCommandは周りにロックをラップ

第一及び第二の形態
。シェルスクリプトまたはthecommandライン内から(2)ロックフロックを管理またはnewgrpコマンドそれはまだ
存在しない場合。それは(appropriatepermissionsを想定して)作成され、aspecifiedファイルまたはディレクトリをロックし、

三番目の形式は、シェルスクリプト内の便利で、通常usedthe次のよう:.
(群れ-s 200#...コマンドロックの下に実行...)200>ファイルを開くために使用されるの/var /ロック/mylockfile

モードはdoesnの’ tは群れする問題では、使用して>または>>を使用すると、ロックファイルが存在しない場合でもロックファイルを作成できますが、書き込み権限が必要です。使用< filealreadyが存在することを要求するだけで読み取り許可がデフォルトで

必要とされ、ロックがすぐに取得できない場合、ロックwaitsuntil群れ、

OPTIONS-S使用可能です - ..共有ロック-sharedObtain、時々読み込みロックと呼ばれる。

-x、-e、--exclusiveObtain排他ロックは、時々、書き込みロックと呼ばれる。Thisisデフォルト。

-u、ファイルを閉じたときにロックがisautomatically下落した。しかし、それは多分、特別な場合には必要なので、enclosedcommandグループがロックを保持するべきではないバックグラウンド・プロセスをフォークしている可能性があります。これは通常、例えば、必要とされていない--unlockDropロック..

-n、--nb、--nonblockFail(1の終了コードを有する)よりもむしろlockcannotは直ちに、

-w、--wait
取得する場合待ちます - (1の終了コードで)タイムアウトsecondsFailロックacquiredwithin秒秒できない場合進分数の値が許可される。

-o、ロックが前に保持されているファイル記述子を--closeClose 。コマンドは-c
とシェルにロック
をINGの

-c、--command commandPass単一のコマンドを保持すべきでない子プロセスを生成します場合は、コマンドを実行すると、これは有用である

.. - 時間は、ヘルプメッセージ

H.ピーターAnvin<. [email protected]>によってAUTHORWritten --helpPrint;。

COPYRIGHTCopyright&コピー; 2003年から2006年H.ピーターAnvin.Thisは無料ですソフトウェアは;.保証はありISNO;.もないPARTICULARPURPOSEの
に対する商品やフィットネスのコピー条件のソースを参照してください。

SEE ALSOflock(2)

AVAILABILITYThe群れコマンドはutilの-linuxのの一部であり、 -ngパッケージとから入手可能ftp://ftp.kernel.org/pub/linux/utils/util-linux-ng/。

ハイライト
ある

群れを通じ、プログラムが最初になりますロックの所有権(通常はファイルを表す)を取得しようとした後にのみ実行され、実行はロックの所有権を保持し、終了後に所有権を解放します。

プログラマ効率開発ツール:プログラミングカッププログラマー効率開発ツール:プログラミングカップ

たとえば、$ HOME:#!/bin /bashsleepの下にシェルスクリプトを書くとします。 10date

リザーバとtest.shに開口我々は、2つのシェルを開いて、略同時に行わこの場合パーミッション(chmodの700 test.sh)

を実行します。フロック/tmp/demo.lock 〜/test.sh

このときどうなりますか?

ユーザーは両方のシェルが停止していることを確認します。1つは10秒後に印刷され、もう1つは10秒後に印刷されます。

A

wushする@ルータ:〜$フロック/tmp/demo.lock ./test.shSat 1月4日午後12時55分24秒CST 2014B

wushルータ@:〜$群れ/tmp/demo.lock ./test .shSat Jan 4 00:55:34 CST 2014

Aプログラムは最初に/tmp/demo.lockの所有権を取得してからtest.shを実行します。 BプログラムはAプログラムが終了するまで待機し(Aは/tmp/demo.lockの所有権を返します)、次に/tmp/demo.lockの所有権を取得します。だからBプログラムは当然Aプログラムよりも10秒遅いです。

Flockのパラメータ

デフォルトの動作に加えて、パラメータを介してFlockの動作を調整できます。デフォルトの振る舞いとの主な違いは、lock_pathの所有権が利用できない場合、次のアクションが異なるということです。 1.flock -n lock_path xxx:所有権が利用できない場合、プログラムは直接中止され、xxxは実行されません。 2.flock -s lock_path xxx:lock_pathを共有ロックとして扱い、複数のプログラムが所有することができます。したがって、誰でもすぐにそれを実行でき、同時にlock_path3.flock -x lock_path xxxを持つことができます:lock_pathを排他ロックとして扱い、1つのプログラムによってのみ所有することができます。

注意:lock_pathを同時に共有したり排他的にしたりすることはできません。

解決の問題

だから、組み合わせの群れの導入により、私は同時に複数のジョブを実行することができ、その後、彼らは次のタスクに進む前に、最後まで待つ:#前作の群れ - S lock_path update_pkg_on_machine_1&#038;群れ-s lock_path update_pkg_on_machine_2&#038;群れ-s lock_path update_pkg_on_machine_3&#038; -x lock_pathエコー"を群れ、すべて完了"!#...仕事
背後

キーが群れ-x lock_pathです共有と排他の間に相互に排他的な関係があるため、Xxxは共存しません。したがって、上記の作業が終了する(lock_pathの所有権を返す)まで待機します。

Copyright © Windowsの知識 All Rights Reserved