Apache httpdの自動起動を停止する
状況
80番ポートがhttpdに占有されていて使えない問題。81番で代用できたので放置していたが、laradock導入にあたり解決することにした(80番を使うコンテナが多すぎてdockerfileの修正が大変)。
ps aux | grep httpd
を実行すると、httpdのプロセスが複数実行されていた(スクショ忘れてた)。プロセスを切っても無限に復活するのでずっと諦めていた。が、たまたま見つけたこちらの記事のコマンドを入力すると解決した。Apache httpdが自動起動されていたことが原因だった。
参考記事。
macOS に標準インストールされている Apache httpd の自動起動を解除する方法 |
使用コマンド
記事の通りにコマンドを実行した。
サービスプログラム[^1]を検索するコマンド。grepでhttpdのプロセスに絞り込み。
sudo launchctl list | grep httpd`
Apache httpdを停止するコマンド。
sudo launchctl stop /System/Library/LaunchDaemons/org.apache.httpd.plist
Apache httpdを自動起動の対象から外すコマンド。
sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist
xxxMacBook-Pro:~ xxx$ ps aux | grep httpd
xxxMacBook-Pro:~ xxx$ lsof -i:80
これでポート解放成功!
Launchctlとは
launchctlとは、サービスプログラムを管理するコマンド。自動的にアプリケーションを処理する機能はlaunchd
が担う。これがデーモンやエージェントの実行を管理する。
launchdは、システムの起動時に、コンピュータをセットアップするためにカーネルによって実行される最初のプロセスです。シェルスクリプトをデーモンとして実行されるようにしたい場合は、launchdでそのシェルスクリプトを起動してください。デーモンやエージェントを起動するためのその他のメカニズムは、Appleの判断で削除対象になります。
Macの「ターミナル」でのlaunchdを使ったスクリプトの管理
脚注
[^1] コンピュータに最初から用意されているプログラム。ファイル変換、テキストエディタ、分類/併合、整列等、プログラム作成やファイル管理を行うソフト。
Discussion