<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>ターミナル on Ejecta</title>
    <link>https://www.ejecta.app/ja/tags/%E3%82%BF%E3%83%BC%E3%83%9F%E3%83%8A%E3%83%AB/</link>
    <description>Recent content in ターミナル on Ejecta</description>
    <generator>Hugo</generator>
    <language>ja</language>
    <lastBuildDate>Mon, 08 Dec 2025 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://www.ejecta.app/ja/tags/%E3%82%BF%E3%83%BC%E3%83%9F%E3%83%8A%E3%83%AB/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Macユーザーのためのlsofコマンド徹底解説</title>
      <link>https://www.ejecta.app/ja/blog/lsof-command-mac-users/</link>
      <pubDate>Mon, 08 Dec 2025 00:00:00 +0000</pubDate>
      <guid>https://www.ejecta.app/ja/blog/lsof-command-mac-users/</guid>
      <description>&lt;p&gt;外付けドライブが取り出せない。macOSは「1つ以上のプログラムがこのディスクを使用している可能性があります」という、いら立たしいほど曖昧なメッセージを表示するだけです。どのプログラムなのか？それは教えてくれません。そんなときに役立つのが &lt;code&gt;lsof&lt;/code&gt; です。&lt;/p&gt;&#xA;&lt;p&gt;この名前は「list open files(開いているファイルの一覧)」を意味し、まさにそのとおりの働きをします。macOSのようなUnixベースのシステムでは、ネットワーク接続、デバイス、ディスクボリュームを含め、ほとんどあらゆるものがファイルとして扱われます。ドライブを取り出せないとき、&lt;code&gt;lsof&lt;/code&gt; を使えば、どのプロセスがそれを離さずに掴んでいるのかを正確に教えてくれます。&lt;/p&gt;&#xA;&lt;h2 id=&#34;基本的な構文&#34;&gt;基本的な構文&lt;/h2&gt;&#xA;&lt;p&gt;取り出しの問題に対してlsofを使う最もシンプルな方法はこうです。&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f7f7f7;-moz-tab-size:2;-o-tab-size:2;tab-size:2;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;lsof /Volumes/YourDriveName&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&amp;ldquo;YourDriveName&amp;rdquo; の部分を実際のドライブ名に置き換えてください。名前にスペースが含まれる場合は、パス全体を引用符で囲みます。&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f7f7f7;-moz-tab-size:2;-o-tab-size:2;tab-size:2;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;lsof &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;/Volumes/My Backup Drive&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;これで、そのボリューム上でファイルハンドルを開いているすべてのプロセスの一覧が返されます。各行には、プロセス名、そのID(PID)、それを実行しているユーザー、そしてアクセスされている特定のファイルに関する情報が表示されます。&lt;/p&gt;&#xA;&lt;h2 id=&#34;出力の読み方&#34;&gt;出力の読み方&lt;/h2&gt;&#xA;&lt;p&gt;典型的なlsofの出力はこのようになります。&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;COMMAND     PID   USER   FD   TYPE DEVICE SIZE/OFF NODE NAME&#xA;mds_store  1234   root   4r   REG   1,12   524288  ...  /Volumes/External/.Spotlight-V100/...&#xA;Finder     5678   you    3r   DIR   1,12     1024  ...  /Volumes/External&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;最も重要な列は、COMMAND(プロセス名)、PID(プロセスを終了させる際に使うプロセスID)、そしてNAME(実際にアクセスされているファイルパス)です。&lt;/p&gt;&#xA;&lt;p&gt;FD列は、そのファイルがどのように使われているかを示します。数字のあとに「r」が付いていれば読み込みアクセス、「w」は書き込み、「u」は読み書き両方を意味します。「cwd」と表示されていれば、そのプロセスがその場所を現在の作業ディレクトリにしているということです。これは、ドライブ上のフォルダを開いたままターミナルのウィンドウを起動しているときに起こります。&lt;/p&gt;&#xA;&lt;h2 id=&#34;ドライブを塞いでいる原因を突き止める&#34;&gt;ドライブを塞いでいる原因を突き止める&lt;/h2&gt;&#xA;&lt;p&gt;取り出しの問題に限って言えば、たいていの場合はどのプロセス名が表示されているかさえ分かれば十分です。よくある原因としては、&lt;code&gt;mds&lt;/code&gt; や &lt;code&gt;mds_stores&lt;/code&gt;(Spotlightのインデックス作成)、&lt;code&gt;Finder&lt;/code&gt;、&lt;code&gt;QuickLookUIService&lt;/code&gt;(サムネイル生成)、そして &lt;code&gt;fsevents&lt;/code&gt;(ファイルシステムの監視)などが挙げられます。&lt;/p&gt;&#xA;&lt;p&gt;出力が多すぎて絞り込みたいときは、grepを使えます。&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f7f7f7;-moz-tab-size:2;-o-tab-size:2;tab-size:2;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;lsof /Volumes/YourDriveName &lt;span style=&#34;color:#1f2328&#34;&gt;|&lt;/span&gt; grep -v &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;^COMMAND&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;これでヘッダー行が取り除かれ、実際のプロセスだけが表示されます。重複を除いたプロセス名だけが欲しい場合はこうします。&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f7f7f7;-moz-tab-size:2;-o-tab-size:2;tab-size:2;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;lsof /Volumes/YourDriveName &lt;span style=&#34;color:#1f2328&#34;&gt;|&lt;/span&gt; awk &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;{print $1}&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;|&lt;/span&gt; sort -u&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;便利なフラグ&#34;&gt;便利なフラグ&lt;/h2&gt;&#xA;&lt;p&gt;&lt;code&gt;-c&lt;/code&gt; フラグはコマンド名でフィルタリングします。Spotlightが原因ではないかと疑っている場合はこうです。&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f7f7f7;-moz-tab-size:2;-o-tab-size:2;tab-size:2;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;lsof -c mds /Volumes/YourDriveName&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;これで、名前が「mds」で始まるプロセスだけが表示されます。&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
