Jenkinが終了できない場合の対処

Jenkinsを使っていてすんなりシャットダウンができたことが少なく、よく「シャットダウン中です」の状態から進まない。調べても、検索仕方がわるいのかシャットダウンが終わらない系のものが少ない。

なぜJenkinsはうまいことシャットダウンができないのか…。

この記事ではコマンドで強制的に停止、起動をするやり方を書く。

(WindowsLinuxのやり方は随時追加したい)

Macでのやり方

最初にやり方を書いておく。詳しいやり方は後ろの方に書く。

Homebrewの場合
すでにJenkinsが起動しているのなら、ターミナルで、

# jenkinsのジョブ名を見つける
launchctl list | grep jenkins
=> 20522    -    homebrew.mxcl.jenkins

# ジョブの停止
launchctl stop homebrew.mxcl.jenkins

# ジョブの起動
launchctl start homebrew.mxcl.jenkins

これで大丈夫のはず。

load, unloadでやる場合

# 自動起動の無効とJenkinsの停止
launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.jenkins.plist

# 自動起動の有効とJenkinsの起動
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.jenkins.plist

詳しいやり方

Homebrewの場合

Homebrewからインストールしている場合、brew list jenkinsでどこにどんなファイルがあるかがわかる。

$ brew list jenkins
/usr/local/Cellar/jenkins/1.574/homebrew.mxcl.jenkins.plist
/usr/local/Cellar/jenkins/1.574/libexec* (3 files)

この、homebrew.mxcl.jenkins.plistがJenkinsを実行するための設定ファイルみたいなものである。plistファイルを使用してlaunchdがJenkinsをサービスとして起動している。すでに登録されている場合は

launchctl list | grep jenkins
# => 20522	-	homebrew.mxcl.jenkins

で見つかる。この、homebrew.mxcl.jenkins.plistは

/Library/LaunchAgents/
~/Library/LaunchAgents/

のどっちかに入ってる。ここを参考にした人は~/Library/LaunchAgents/に入ってると思う。

公式サイトのインストーラの場合

公式サイトの.pkgで入れた人は多分org.jenkins-ci.plistが /Library/LaunchDaemons/に入ってると思う。下のコマンドは予想で書いてる。.pkgでインストールされるファイルがorg.jenkins-ci.plistになる。

cd /Library*
sudo find . -type f | grep jenkins 
#=> /Library/LaunchDaemons/org.jenkins-ci.plist

起動、停止コマンド

homebrew.mxcl.jenkins、org.jenkins-ci.plistという名前がわかっていれば停止、起動コマンドが使える。普通にインストールしていればこのコマンドで事足りるはず。

# ジョブの停止
launchctl stop homebrew.mxcl.jenkins

# ジョブの起動
launchctl start homebrew.mxcl.jenkins

こうすることでJenkinsを強制的に再起動させることができる。

load, unloadでやる場合

load, unloadでも停止、起動をすることができる。その場合、どこにファイルがあるかを把握する必要がある。

Jenkinsのplistの場所は、大体ここらへんに入ってるはず。

/Library/LaunchAgents/
/Library/LaunchDaemons/

ここ を参考にした人は
~/Library/LaunchAgents/ に入ってるはず。

自動起動の無効、Jenkinsを起動している場合は停止する
launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.jenkins.plist

自動起動の有効、Jenkinsを起動している場合は起動させる
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.jenkins.plist

これでJenkinsの強制再起動をすることができる。

まとめるのが意外と大変だったので、今回はここまで。