私はこれを作ってきました(http://tryperl.com)Linuxを学びましょう。だから私の質問は私が完全に理解していない* nixについてです。
私がやりたいことの1つは、生成されたスクリプト(私のアプリケーションで)を制限されたユーザーとして実行することです。したがって、1つを作成し、limiteduser
フォーク制限を設定することができます。このように:limiteduser hard nproc 300
。
それではこれですか?正しい方法次のようにスクリプトを実行しますlimiteduser
。
sudo -u limiteduser perl myscript.pl
第二、同時リクエストがあればどうなりますか?フォークと実行そして、他のスクリプトを使って上記のコードを同時に実行してください。これで問題が発生しますか?同じユーザーが両方のプロセスを実行したときに何が起こるのか聞きました。
特に私はUbuntuで実行していますが、これがすべての* nixディストリビューションに適用されると思いますか?
更新:追加で使用する予定です。停止する時間がかかりすぎるとスクリプトのタイムアウトが許可されるため、理想的には限られた数のプロセスを実行する必要があります。
答え1
まず、sudoは限られたユーザーでスクリプトを実行する良い方法です。
次に、スクリプトの複数のインスタンスを同時に実行すると、問題が発生するかどうかは、スクリプトが実際に実行する操作によって異なります。これは、(通常)個々のインスタンスが同じユーザーによって実行されるかどうかには関係ありません。代わりに、スクリプトがファイルを編集しようとしているかどうかを考慮する必要があります。この場合、両方のインスタンスが同じファイルを編集しようとする可能性があります。同時に、ファイルが予期しない状態になる可能性があります。
さらに、もちろん、ユーザーが実行できるプロセス数や消費できるメモリ量を制限すると、ある時点で制限に達する可能性があり、スクリプトが目的の操作を実行できない可能性があります。しかし、これは完全な制限システムの特徴です。 (制限がないと、システムが完全に作成されたため、システム全体がひざまずく可能性がありますが、これはプログラムを実行するのではなく、プログラムが作成された方法によるものです(rootで実行しない限り)。仕事を実行するのは良いことです)。
答え2
最初のポイントに関して、ここに1つの方法があります!そうですね。
2番目の点に関して、Unix / Linuxはマルチプロセスオペレーティングシステムと同様に、多くの同時プロセスを処理できます。問題が発生した場合、通常はリソース競合が原因で発生します。したがって、すべてのプロセスが低速リポジトリのファイルやファイルシステム、大きなロックを持つIPCリソースなどにアクセスしますか?したがって、基本的にOS XまたはWindowsで発生する並行性の問題は、Linux / Unixの世界でも同様です。