Ubuntuファイルシステムのレイアウトを理解する方法


220

Windowsでは、おそらくインストールドライブ(私の場合C:\)に重要なフォルダー(Windowsファイルシステムの論理図では重要という意味)がいくつかあります。すなわちProgram FilesおよびWindows。私は単にWindowsフォルダから離れ、「プログラムファイルの追加と削除」はprogram filesWindows のフォルダを処理するのに十分です。もちろんUsers、ユーザー(管理者ではない)が自分のフォルダーのみにアクセスできるという名前のフォルダーがあります。

したがって、Windowsファイルシステムの私の心の中には、ある程度の明確なイメージがあります。Ubuntuで場所に到達すると/、フォルダーの膨大なリストがありますが、ほとんどのフォルダーには何が含まれているのかわかりません。この/binフォルダはWindows、Windows のフォルダに相当するようです。この/usrフォルダはUsers、Windows のフォルダに相当するようです。しかし、/homeフォルダでさえ請求書に収まるように見えます。

Ubuntu(Linux)はWindowsとは異なる特性を持っていることを理解してください。つまり、UbuntuではWindowsの機能とまったく同じである必要はありません。私が探しているのは、Ubuntuファイルシステムのもう少し明確な画像だけです。

この質問は、より回答しやすいように分割している大きな質問の一部です。元の質問はここにあります:http :
//sgsawant.wordpress.com/2012/05/17/whats-the-equivalent-of-add-or-remove-programs-in-ubuntu/


3
UnixおよびLinuxディレクトリ構造タグも参照してください。すべてのLinuxディストリビューションは同じモデルに従います。
ジル

回答ありがとうございます。いくつかの点について少し混乱しています。Windowsでは、通常、セットアップはすべてのユーザーにソフトウェアをインストールするオプションをプロンプトで提供します。Ubuntuでその区別をする方法は?また、これは開発ソフトウェアをIDEに構成する際の通常の問題です。たとえば、Windowsでは、「program files \ miktex \ bin」に「pdflatex.exe」というファイルがあります。したがって、IDEでこのファイルを指定して構成できます。Ubuntuでこのプロセスを実行するにはどうすればよいですか?ソフトウェアに関連付けられている一般的なバイナリファイルはどこにありますか(特に構成の観点から)?
Shashank Sawant

2
Ubuntuでは、通常、すべてのユーザーにソフトウェアをインストールします。パッケージマネージャーを使用して行うことはすべて、すべてのユーザーを対象としています。あなたのコメントの残りの部分は理解できません。「ソフトウェアに関連付けられたバイナリファイル」を「構成」しません。これを別の質問として尋ね、何をしようとしているのかをよりよく説明してください。
ジル

とった。新しい質問を作成します。それでも、私が意味することの簡単な説明は次のとおりです。Windowsでは、.exeファイルを簡単に見つけることができます。例:「C:\ Python27 \ python.exe」。だから、私はPythonのプログラムがどこから始まるのか知っています。これで、Eclipse IDEを使用する必要がある場合、単純にpython.exeを指すことができます。これが「構成」が意味するものです。Python用にIDEを構成しました。Ubuntuでは、プログラムがインストールされている場所はどこですか?それはまだ私を回避するものです。
Shashank Sawant

2
@Gillesと言うときは注意してくださいallGoboLinuxプロジェクトは、実際のディレクトリ構造のような複数のWindowsを使用しています。
new123456

回答:


251

これについては、例えばウィキペディアで読むことができます。抜粋:

Filesystem Hierarchy Standard(FHS)は、Linuxオペレーティングシステムの主要なディレクトリとその内容を定義します。ほとんどの場合、従来のBSDファイルシステム階層の形式化と拡張です。

FHSは、HP、Red Hat、IBM、Dellなどの主要なソフトウェアおよびハードウェアベンダーで構成される非営利組織であるLinux Foundationによって管理されています。現在のバージョンは3.0で、2015年6月3日にリリースされました。

短い説明付きの視覚的表現:

ここに画像の説明を入力してください

基本的に、Linuxは最小限の権限でシステムを可能な限り安全にするために必要な機能に基づいてディレクトリ構造を分割しました。さもなければ、誰かが回避可能な仕事をたくさんしなければならない。

UnixおよびLinuxはマルチユーザーシステムとして作成され、Windowsは単一ユーザー用に作成されたことを思い出してください。他のすべてはその考えから説明できます。マルチユーザーおよびセキュリティであると考えるとき、すべてのディレクトリを説明できます。

3つの例:

  • adminのみのファイルとディレクトリが同じディレクトリに収集されていることがわかります。s /sbin/usr/sbinand /usr/local/sbinは、system を表します。通常のユーザーは、そこにあるプログラムを起動することさえできません。通常のユーザーが開始できるファイルは、最も論理的に常駐する場所に基づいて、/ bin、/ usr / bin、/ usr / local / binにあります。ただし、管理者のみの場合はs、そのディレクトリのバージョンに移動する必要があります。という有名なユーティリティがありますfuser。あなたはそれでプロセスを殺すことができます。通常のユーザーがこれを使用できる場合、セッションを強制終了できます。

  • 同じことが/home/ home / user1はuser1のプロパティです。/ home / user2はuser2のプロパティです。user2には、user1の家で仕事をするビジネスはありません(また、逆のことも言えます。user1には、user2の家で仕事をするビジネスはありません)。すべてのファイルが/ homeにあり、その下にユーザー名がない場合、すべてのファイルに許可を与え、誰かがそれらのファイルの書き込み/削除を許可されているかどうかを評価する必要があります。何十人ものユーザーがいる場合、悪夢です。

  • ライブラリに関する追加

    /lib//usr/lib/、および/usr/local/lib/multilibのシステムが存在していたとが存在物事を壊す防ぐために、前から元の場所です。/usr/lib32/usr/lib/64/usr/local/lib32//usr/local/lib64/32/64ビットのmultilibの発明です。

決して静的な概念ではありません。他のLinuxフレーバーは、このレイアウトを微調整しました。例えば; 現在、SSDは読み取り専用ファイルの方が良いため、FHSのレイアウトでdebianとUbuntuが大きく変化するのを見るでしょう。ファイルが「読み取り専用」および「書き込み可能な」ディレクトリ/グループに分割される新しいレイアウトに向かう動きがあるため、読み取り専用(ssdのパーティション)および書き込み可能なルートパーティションを作成できます。 (sata hdd)。これに使用される新しいディレクトリは(イメージではなく)です/run/


18
+1リンツウィンド。私は画像が好きで、実際に探していました。
ルイスアルバラード

5
haは注目を集めると思った:+ @LuisAlvarado
Rinzwind

4
より良い答えはありません!
Shashank Sawant

1
数年前、今は/mntどうでしたか/media
-RobinJ

9
@RobinJ:違いは、/mnt歴史的に手動で管理されてきたことです。多くの一時的なデバイス(フラッシュドライブなど)の台頭と自動マウントの標準化に伴い、マウントポイントを自動的に処理する必要がありました。既存の手動構成との競合を避けるために、新しいディレクトリが必要でした。したがって、これらの日/mntは便利な一時的なマウントポイントを提供する役割に委ねられています。
スコットセヴェランス

104

このコマンドを試してみてください...

man 7 hier

このマニュアルページは、http//manpages.ubuntu.com/manpages/en/man7/hier.7.htmlからも参照できます

それが役に立てば幸い


1
いいね!(ネットがダウンしていても)常に存在しますが、そのことを忘れてしまいました)
-Rinzwind

1
manは「it」に名前を変更する必要があります。:)))
シキ

man hier今、私のお気に入りのコマンドの1つです!説明はFHSドコよりも明確であり、特に、中程度のDOS / Windowsエクスペリエンスを超えた、経験の浅いUbuntuユーザーにとっては、「ローカルマシン」と「サイト全体」を区別しています。
-WillC

ちなみにセクション7の「その他のマニュアルページのその他」の略です。
パブロA

うーん。この種の価値があるのは、ubuntuのすべてのバージョンがこれを持っている可能性が高いにもかかわらず、リンクのみの答えを思い出させます。manページのコンテンツの一部を回答に組み込むことができますか?
jrh

45

遅い回答 -初心者が従うべきロードマップを作成しました。ファイルを探しているのにどこを探すべきかわからない場合は、マップを使用して大まかにナビゲートできます。こちらから高解像度のPNGをダウンロードできます。関連する投稿はこちらにあります。時間が許せば、ファイルと投稿の両方を更新し続け、有益なコメントを取り入れます。


フローチャートを作成するための興味深い有益なアイデアですが、残念ながら、行き止まりがあるようです。私の質問は、mysqldumpどこにファイルを出力するべきかを実行している場合ですか?
BadHorsie

もちろん、@ BadHorsieは常に特定のユースケースに依存しますが、/home/badhorsie/mysqldumpディレクトリにダンプするだけで十分です。多くのアプリを実行している場合は、新しいユーザーを作成して各アプリを実行し、そのアプリ/ユーザーのhomeディレクトリにダンプできます。
d4nyll

@ paranoid-panda、フル解像度で画像をクリックできないようにした理由を少し拡大していただけますか?この投稿に埋め込まれたバージョンはほとんど読めません。
気難しい

@waldyrious:改訂履歴を見ると、スペルミスを修正しただけであることがわかります。この特定の方法で画像を追加したのは別のユーザーでした。私とは何の関係もありません。クリックして考えられる正しい構文を思い出せないので、気軽に編集してください。

@ParanoidPandaそれはまさに私がやったことです。私の編集はタイプミスを修正し、画像をクリック可能にし、あなたのレビューは拒否して編集することでしたので、私の質問:画像をクリック可能にすることで何が間違っていましたか?
ウォルディリアス

36

次のテキストは、ディレクトリ構造を示しています。

mtk4@laptop:/$ pwd
/
mtk4@laptop:/$ tree -L 1
.
|-- bin
|-- boot
|-- cdrom
|-- dev
|-- etc
|-- home
|-- lib
|-- lost+found
|-- media
|-- mnt
|-- opt
|-- proc
|-- root
|-- run
|-- sbin
|-- selinux
|-- srv
|-- sys
|-- tmp
|-- usr
|-- var

主なコンポーネントは次のとおりです。

  1. /boot :ブートローダーが含まれています

  2. /home :ユーザーのホームディレクトリが含まれます。

  3. /bin :システム上のすべてのユーザーが使用するすべての実行可能バイナリとコマンドはここにあります。

  4. /sbin :これには、システム管理者が通常使用するシステム実行可能バイナリが含まれています。

  5. /lib :/ binおよび/ sbinのバイナリをサポートするシステムライブラリが含まれています。

  6. /etc :ネットワーク、ブート時間などの構成ファイルが含まれています。

  7. /dev :これにはデバイスファイルがあります。つまり、usb、端末デバイス、またはシステムに接続されている他のデバイスがここに表示されます。

  8. /proc :実行中のプロセスに関する情報が含まれます。

  9. /tmp:これは、多くのプロセスが必要な一時ファイルを作成する一時ディレクトリです。これは、マシンが起動するたびに削除されます。

詳細については、Thegeekstuffリンクで一般的なLinuxファイルシステムについて完全に説明しています。


20

\Usersはと同等/homeです。の名前/usrは歴史的な遺物です。

合成等価物\Windows\Program Filesの組み合わせである/bin/boot/etc/lib/sbin/tmp/usrおよび/var。LinuxとWindowsは、インストールされているソフトウェアを別々に分割します。Windowsは、オペレーティングシステムとコンパニオンプログラムを区別します。Linuxは同じ方法でこの区別を行いません。すべてではありませんが、ほとんどのソフトウェアはUbuntu(ディストリビューター)を通じて提供され、同じディレクトリ階層にインストールされます。ソフトウェアはパッケージマネージャーによって追跡されるため、各プログラムを独自のディレクトリに保存する必要はありません。Linuxの場合:

  • /etc オペレーティングシステム全体に適用するか、特定のアプリケーションに適用するかに関係なく、すべてのユーザーに影響を与えるシステム構成ファイル用です。
  • /usr システムコードとデータ(プログラム、ライブラリ、ドキュメントなど)用です。
  • /var一時ファイル、ログ、パッケージマネージャーデータベース、プリンタースプール、ゲーム保存ファイルなどの可変または一時データ用です/tmp。再起動後に消去できる一時ファイル用もあります。
  • /bin/libおよび/sbinルートディレクトリには、対応するディレクトリがあり/usrます。外部に/usrあるファイルは、ブートプロセスの初期段階で必要なファイルです。これは、ディスクが小さく/usr、ネットワーク上の複数のワークステーション間で共有されるファイルシステム上にある可能性がある時代からの遺物であり、実際にはほとんどのシステムで有用な区別ではありません。
  • /boot には、オペレーティングシステムの起動にのみ必要なファイルがいくつか含まれており、日常の操作には必要ありません。

Windowsが持っているものに対応しない追加のディレクトリがあります。

  • /rootルートユーザーのホームディレクトリです。rootユーザーは、特定のユーザーに関連付けられていない管理者アカウントです。実行時に変更するユーザーですsudo。Ubuntuは、デフォルトではrootユーザーのログインを許可しません。
  • /mediaそして、/mntマウントポイントをされています。あなたは他のオペレーティング・システムとリモートドライブのファイルシステムを見ることができ、それらをしています。Windowsでこれに相当するのは、他のドライブ文字です。
  • /proc/sysシステム情報を表示します。Windowsでは、この情報を表示するには、メニューを歩いたり、システムコマンドを呼び出したり、サードパーティのプログラムをインストールする必要があります。

Ubuntuは、他のLinuxディストリビューションと同様に、一般的にLinux Filesystem Hierarchy Standardに従います。


5

Ubuntu(すべてのUNIXライクシステムと同様)は、ファイルを階層ツリーに編成します。階層ツリーでは、子と親のチームで関係が考えられます。ディレクトリには、ツリーの「葉」である通常のファイルだけでなく、他のディレクトリも含めることができます。ツリーの任意の要素をパス名で参照できます。絶対パス名は文字/(他のすべてのディレクトリとファイルを含むルートディレクトリを識別する)で始まり、要素に到達するために横断する必要があるすべての子ディレクトリがリストされ、それぞれが/記号で区切られます。

相対パス名は、/で始まらない名前です。その場合、ディレクトリツリーは、現在のディレクトリと呼ばれるコンテキストに応じて変化する特定のポイントから開始されます。すべてのディレクトリには、という2つの特別なディレクトリがあります。および..は、それぞれディレクトリ自体とその親ディレクトリを参照します。

すべてのファイルとディレクトリに共通のルートがあるという事実は、いくつかの異なるストレージデバイスがシステム上に存在する場合でも、それらが目的の場所にマウントされると、それらはすべてツリー内のどこかのディレクトリとみなされることを意味します

ここで例と詳細を見つけてください

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.