27

sidekiq の pidfile を見つけて正常にシャットダウンする方法を知っている人はいますか? 実行ps ax | grep sidekiqしてsidekiqctl stop <pid from grep>から一貫して実行するとno such pidfileエラーが発生しますか? Cntl-C と Cntl-D も効果がないようです。

プロセス ウィンドウを閉じて新しいウィンドウを再度開いても、デーモンとして実行されているように見えるため、プロセスは強制終了されません。

私が見つけた唯一の一貫した修正は、再起動です。

4

7 に答える 7

75

これを使用して sidekiq を強制的に終了します。

ps -ef | grep sidekiq | grep -v grep | awk '{print $2}' | xargs kill -9
于 2014-02-14T21:46:11.900 に答える
36

Sidekiq は、開始時に pidfile を指定する機能、または以下に示すように、プロセスの開始後に pidfile を作成する機能を提供します。どちらの場合でも、停止時に pidfile を使用できます。

  1. ps -ef | grep sidekiqpidを見つけるために使用します
  2. sidekiq.pidたった今見つけた pid だけを内容とするファイル (例: ) を作成します。
  3. sidekiqctl stop <pidfile_name>
  4. 将来 sidekiq を開始するときに-P <pidfile_name>orを使用する--pidfile <pidfile_name>
于 2013-08-15T20:16:25.190 に答える
18

ちょうどこれを自分で調べていた...

Sidekiqの新しいバージョンにはこれが組み込まれているようです:

https://github.com/mperham/sidekiq/wiki/Signals

kill -USR1 [PROCESS_ID]

私にとってはうまくいきました。労働者は新しい仕事をやめましたが、彼らがしていた仕事を終えました。

kill -TERM [PROCESS_ID]

于 2012-11-23T15:01:43.093 に答える
2

神を使ってsidekiqを監視してみてください。

次に、あなたがする必要があるのは、バンドルexecgodstopです。

または、次を使用することもできます:sidekiqctl stop 60

于 2013-01-12T00:17:53.343 に答える
2

バッシュ好きなら…

スクリプト/stop_sidekiq.sh

#!/bin/bash
DIR="$( cd "$( dirname "$0" )" && pwd )"

PROJECT_DIR=$DIR/../ # EDIT HERE: rel path to your project form this file location (my scripts are in ./scripts/)
SIDEKIQ_PID_FILE=$PROJECT_DIR/tmp/pids/sidekiq.pid  # EDIT HERE: pid file location

if [ ! -f $SIDEKIQ_PID_FILE ]; then
    # if no pid file, retrieve pid and create file
    ps -ef | grep sidekiq | grep busy | grep -v grep | awk '{print $2}'  > $SIDEKIQ_PID_FILE
fi

(cd $PROJECT_DIR && bundle exec sidekiqctl stop $SIDEKIQ_PID_FILE)

ノート:

  • sidekiq が pid ファイルの引数なしで起動された場合でも動作します
  • このスクリプトはプロジェクト内のフォルダーにあり、pid ファイルは ./tmp/pids/ に保存されていると想定しています。
于 2014-11-26T03:00:52.243 に答える