2

Windows 用のシェフを使用しており、selenium-server Java サービス (java -jar seleniumserver.jar) をデーモンとして起動するバッチ ファイルを実行する必要があります。windows_batch リソースを使用しようとすると、プロビジョニング中に Chef がハングします。

問題は、Selenium サーバーは、どのコマンド ラインで開始しても実行されたままですが、コマンドが終了するまで、chef はマシンのプロビジョニングを続行しないことです。問題は、コマンドが終了しないことです。終了することは想定されていません。

これが私がこれまでに試したことです:

  • java -jar seleniumserver.jar & の実行 (windows_batch リソースを使用)
  • テンプレートを使用してコマンドのバッチ ファイルを作成し、windows_batch を使用して file.bat を実行します。
  • windows_batch を使用して & (file.bat &) でバッチファイルを実行する

たとえそれがハックであっても、私はどんなアイデアにもオープンです。前もって感謝します!

4

2 に答える 2

1

質問を正しく理解できれば、メインのバッチ ファイルが終了するように別のプロセスを開始できます。例えば:

start java -jar seleniumserver.jar

さまざまなオプションを使用して、いくつかの実行パラメーターを制御できstartます。

コマンド ラインを で終了&しても、*nix と同じにはなりません。

于 2013-08-17T23:18:38.360 に答える
0

シェフの実行をブロックしないWindows上の非同期プロセス

batch "run" do code 'powershell -c "start-process notepad.exe"' end

以下は、start-process を使用して引数付きのコマンドを開始する例です。

コマンドプロンプトでコマンドを単独で実行して、出力をよく理解してください。

net statistics server

次に、コマンド プロンプトで powershell と start-process を使用して実行し、c:\output.txt に正しい出力が表示されることを確認します。一重引用符または二重引用符の使用には十分注意してください。私の経験では、何らかの理由で start-process が二重引用符で機能しないと言っています。

powershell -c start-process net -ArgumentList 'statistics workstation' -RedirectStandardOutput c:\output.txt

次に、Chef 実行リソースに以下を入れて実行します。ここでも、一重引用符、二重引用符、エスケープされた一重引用符に注意してください。

execute "run" do
  command 'powershell -c "start-process net -ArgumentList \'statistics workstation\' -RedirectStandardOutput c:\chef-output.txt"'
end

c:\chef-output.txt で正しい出力が見つかるはずです。

于 2016-03-28T19:37:38.170 に答える