別のターミナルにいる場合、またはフォアマンプロセスを&
(Jenkinsジョブ内で実行する予定)でバックグラウンドで処理した場合は、 foreman stop
があると便利です。 Ctrl+C
が機能するのと同じ方法でプロセスを停止します
foreman stop
はどの職長を止めるかをどうやって知るのでしょうか?
これについて良い計画がある場合は、このプルリクエストを検討します。
やや関連する問題は#235です。
おそらく#384に関連しています...
foreman stop
コマンドを使用すると、今やらなければならないことを簡単かつエレガントに実行できます。
#!/bin/bash
foreman start &
python pnp_consumer/tests.py "http://localhost:5000/"
kill $!
kill
ステートメントは少しハッキーですが、機能しません。フォアマンプロセスを強制終了しますが、(私のProcfileから)実行中のgunicornインスタンスは実行されたままで、ポートを拘束します。
なぜこれが閉鎖されたのですか?
フォアマンはフォアグラウンドで実行されるように設計されています。 この機能は、主要なユースケース以外の何かに多くの複雑さ(どのフォアマンを停止するかをどのように知るか)を追加します。
古いものだと知っていますが、^Cが発生した後にいくつかの状態をクリアする必要があります。 したがって、私はこのチケットをグーグルで検索しました。 彼の状態は、私が邪魔にならないようにする必要があるPIDファイルです。
@sebsとまったく同じ問題があり、これを修正したいと思っています。 React + Electronデスクトップアプリの開発環境にForemanを使用しています(この記事の推奨に従って)。ここでは、 localhost:5000で開発サーバーを起動します。 ctrl-Cを押すと、Foremanは終了しますが、サーバーは実行されたままで、:5000でリッスンします。つまり、Foremanサービスを再度開始しようとすると、:5000をリッスンしている別のプロセスがあるため、エラーがスローされます。
インタラクティブプロンプトからすべての子プロセスを終了する方法はありますか?
私のシナリオ:Docker環境を次のように開始します
forman start
.... executes docker-compose up --build
私
私はSTG+Cを使用していますが、1000のケースの1つで、Dockerの魔法が失敗します。 アプリまたはデータベース接続のシャットダウンをブロックするファイルハンドルを開きます。
だから私は、私が掃除したいすべての状態を掃除するために、フォーマンストップの愚かなリストを持っていたいです。 念のため。 私の場合、これは
docker-compose down
@axelkennedalは、開発サーバーがシェルを終了するためのすべての重要なイベントを処理することを確認します。 ほとんどの開発サーバーは単なる開発サーバーです。 まだioを実行している接続が開いているため、サーバーが終了しないことを期待します。 長期的なリクエストなどが頭に浮かびます。 一方では、これは次のとおりです。欠陥のある実装のフォアマンではなく、電子を修正します。 反対に、私はこれらの欠陥のあるシナリオのためのツールを職長に見たいと思っています。 これがすべて理にかなっていることを願っています。