Red Hat Enterprise Linux でのファイルシステムへのアクセス

Red Hat Enterprise LinuxBeginner
オンラインで実践に進む

はじめに

この実験(Lab)では、Red Hat Enterprise Linux (RHEL) システム上で Linux ファイルシステムを管理する実践的な経験を積みます。ファイルシステムとブロックデバイスの識別、dfdu を使用したディスク使用量の調査、そしてファイルシステムの手動でのマウントとアンマウントを練習します。

さらに、この実験では、locatefind などのコマンドを使用してファイルを効率的に検索する方法を学びます。これにより、名前、所有権、パーミッション、サイズ、時間、ファイルタイプなど、さまざまな条件に基づいてファイルを検索できるようになります。

ファイルシステムとブロックデバイスの識別

このステップでは、Red Hat Enterprise Linux システム上でファイルシステムとブロックデバイスを識別する方法を学びます。ストレージがどのように構成されているかを理解することは、システム管理の基本です。ブロックデバイスとその関連ファイルシステムを一覧表示し、調査するためのさまざまなコマンドを学習します。

まず、いくつかの基本的な概念を理解しましょう。

  • ブロックデバイス (Block Device): ブロックデバイスは、ストレージデバイスへの低レベルアクセスを提供するファイルです。ハードドライブ、SSD、USB ドライブなどが例として挙げられます。Linux では、これらは通常 /dev ディレクトリにあります。
  • パーティション (Partition): パーティションは、物理ストレージデバイスの論理的な分割です。1 つのハードドライブに複数のパーティションを設定でき、それぞれ異なるファイルシステムでフォーマットしたり、異なる目的で使用したりできます。
  • ファイルシステム (File System): ファイルシステムは、オペレーティングシステムがデータの保存と取得を制御するために使用するメソッドとデータ構造です。データをファイルとディレクトリに整理します。一般的な Linux ファイルシステムには、XFS や ext4 などがあります。
  • マウントポイント (Mount Point): マウントポイントは、ファイルシステム階層内の空のディレクトリであり、ファイルシステムがアタッチまたは「マウント」され、その内容にアクセスできるようになります。

まず、lsblk コマンドを使用して、システムで利用可能なブロックデバイスを一覧表示することから始めましょう。このコマンドは、すべてのブロックデバイスとそのパーティションのツリーのような概要を提供します。

lsblk

コンテナ環境の仮想ディスクデバイスを表す vdavdb などのデバイスが表示されるはずです。

NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
vda    253:0    0   40G  0 disk
├─vda1 253:1    0    1M  0 part
├─vda2 253:2    0  100M  0 part /boot/efi
└─vda3 253:3    0 39.9G  0 part /
vdb    253:16   0   40G  0 disk

出力の説明:

  • NAME: ブロックデバイス (例:vda, vdb) またはパーティション (例:vda1, vda2) の名前。
  • MAJ:MIN: メジャーデバイス番号とマイナーデバイス番号。
  • RM: リムーバブルデバイス (リムーバブルの場合は 1、そうでない場合は 0)。
  • SIZE: デバイスまたはパーティションのサイズ。
  • RO: 読み取り専用 (読み取り専用の場合は 1、そうでない場合は 0)。
  • TYPE: デバイスのタイプ (例:disk, パーティションの場合は part)。
  • MOUNTPOINTS: デバイスまたはパーティションが現在マウントされている場所。

次に、df コマンドを使用して、ファイルシステムとその使用状況を調べましょう。df コマンドは、ファイルシステムのディスク容量の使用状況を報告します。

df

出力には、さまざまなファイルシステム、その合計サイズ、使用済み容量、利用可能容量、およびマウントポイントが表示されます。

Filesystem     1K-blocks    Used Available Use% Mounted on
devtmpfs            4096       0      4096   0% /dev
tmpfs            1822216       0   1822216   0% /dev/shm
tmpfs             728888     616    728272   1% /run
efivarfs             256       9       243   4% /sys/firmware/efi/efivars
/dev/vda3       41773036 3628732  38144304   9% /
/dev/vda2         102156    7198     94958   8% /boot/efi
tmpfs             364440       0    364440   0% /run/user/1000

特にサイズについて、出力を読みやすくするために、人間が読める形式 (例:MiB の場合は M、GiB の場合は G) で -h オプションを使用できます。

df -h

より理解しやすい形式でサイズが表示されます。

Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        4.0M     0  4.0M   0% /dev
tmpfs           1.8G     0  1.8G   0% /dev/shm
tmpfs           712M  616K  712M   1% /run
efivarfs        256K  8.5K  243K   4% /sys/firmware/efi/efivars
/dev/vda3        40G  3.5G   37G   9% /
/dev/vda2       100M  7.1M   93M   8% /boot/efi
tmpfs           356M     0  356M   0% /run/user/1000

最後に、lsblk -fp コマンドを使用して、デバイスのフルパス、UUID (Universally Unique Identifiers)、およびファイルシステムタイプを一覧表示しましょう。UUID は、デバイス名が変更されても同じままの安定した識別子であり、一貫したマウントに役立ちます。

lsblk -fp

出力には、UUID とファイルシステムタイプが含まれます。

NAME        FSTYPE FSVER LABEL UUID                                 FSAVAIL FSUSE% MOUNTPOINTS
/dev/vda
├─/dev/vda1
├─/dev/vda2 vfat   FAT16       E52E-0564                              92.7M     7% /boot/efi
└─/dev/vda3 xfs          root  4c234c8b-4f67-4d65-abb5-06753b1ec236   36.4G     9% /
/dev/vdb

各ファイルシステムの一意の識別子を提供する UUID 列に注目してください。これは、特に /etc/fstab のような設定ファイルでファイルシステムを確実にマウントするために重要です。

df および du を使用したファイルシステムの使用状況の調査

このステップでは、df コマンドと du コマンドを使用してファイルシステムの使用状況をさらに詳しく調査します。df がマウントされたファイルシステムのディスク容量の使用状況の概要を提供するのに対し、du (disk usage) は、特定のファイルまたはディレクトリのファイルスペースの使用状況を推定するために使用されます。それぞれのコマンドの違いと、いつ各コマンドを使用するかを理解することは、効果的なディスク容量管理にとって不可欠です。

まず、人間が読めるオプションを使用して、df コマンドを再検討しましょう。このコマンドは、すべてのマウントされたファイルシステムで使用されている容量と利用可能な容量の簡単な概要を取得するのに最適です。

df -h

出力には、読みやすい形式 (例:ギガバイトの場合は G、メガバイトの場合は M) でディスク使用量が表示されます。

Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        892M     0  892M   0% /dev
tmpfs           915M     0  915M   0% /dev/shm
tmpfs           915M   17M  899M   2% /run
tmpfs           915M     0  915M   0% /sys/fs/cgroup
/dev/vda4       8.0G  1.4G  6.7G  17% /
/dev/vda3      1014M  166M  849M  17% /boot
tmpfs           183M     0  183M   0% /run/user/1000

次に、du コマンドを調べてみましょう。df とは異なり、du は、指定されたパス内のファイルとディレクトリによって使用されるディスク容量を計算します。これは、どのディレクトリまたはファイルが最も多くの容量を消費しているかを知りたい場合に特に役立ちます。

現在のディレクトリ (~/project) のディスク使用量を確認するには、引数なしで du を使用します。これにより、~/project 内のすべてのファイルとサブディレクトリのサイズが一覧表示されます。

du

出力は広範囲に及ぶ可能性があり、デフォルトではキロバイト単位でサイズが表示されます。

4       ./.config/xfce4/xfconf/xfce-perchannel-xml
8       ./.config/xfce4/xfconf
12      ./.config/xfce4
16      ./.config
4       ./.local/share/nano
8       ./.local/share
12      ./.local
28      .

df -h と同様に、出力を読みやすくするために、du-h オプションを使用できます。

du -h

これにより、サイズが人間が読める単位で表示されます。

4.0K    ./.config/xfce4/xfconf/xfce-perchannel-xml
8.0K    ./.config/xfce4/xfconf
12K     ./.config/xfce4
16K     ./.config
4.0K    ./.local/share/nano
8.0K    ./.local/share
12K     ./.local
28K     .

多くの場合、個々のファイルとサブディレクトリのサイズではなく、ディレクトリの合計サイズに関心があります。このためには、-s (summary) オプションを -h と共に使用できます。ホームディレクトリ (~) の合計サイズを確認してみましょう。

du -sh ~

このコマンドは、ホームディレクトリの合計サイズを出力します。

48K     /home/labex

du がそれらのサイズをどのように報告するかを確認するために、いくつかのファイルを作成してみましょう。test_data という名前のディレクトリを作成し、その中にいくつかのファイルを作成します。

まず、ディレクトリを作成します。

mkdir ~/project/test_data

次に、test_data ディレクトリに移動します。

cd ~/project/test_data

次に、いくつかのコンテンツを含むファイルを作成します。head コマンドを使用して、特定のサイズのファイルを生成します。

head -c 1K < /dev/urandom > file1.txt
head -c 5K < /dev/urandom > file2.txt
head -c 10K < /dev/urandom > file3.txt

次に、du -h を使用して、これらの新しいファイルと test_data ディレクトリのサイズを確認します。

du -h

次のような出力が表示されるはずです。

1.0K    ./file1.txt
5.0K    ./file2.txt
10K     ./file3.txt
24K     .

最後の行 (24K .) は、現在のディレクトリ (., つまり ~/project/test_data) の合計サイズを示しています。

最後に、~/project ディレクトリに戻り、du -sh を使用して test_data の合計サイズを確認しましょう。

cd ~/project
du -sh test_data

これにより、test_data ディレクトリの要約されたサイズが表示されます。

24K     test_data

これは、du を使用して、特定のディレクトリ内のディスク容量の消費を特定し、ストレージを効果的に管理する方法を示しています。

ファイルシステムの手動マウントとアンマウント

このステップでは、ファイルシステムを手動でマウントおよびアンマウントする方法を学びます。ファイルシステムをマウントすると、ファイルシステム階層内の特定のディレクトリ (マウントポイント) を介してその内容にアクセスできるようになります。アンマウントすると、ファイルシステムがマウントポイントから切り離され、再度マウントされるまでその内容にアクセスできなくなります。これは、リムーバブルメディア、一時的なストレージ、または新しいディスクパーティションを管理するための重要なスキルです。

この演習では、LabEx VM 環境で利用可能な、マウントされていないブロックデバイスの 1 つを使用します。前のステップから、現在マウントされていない /dev/vdb デバイスが表示されているはずです。このステップでは、/dev/vdb を使用します。

まず、lsblk を使用して、利用可能なマウントされていないブロックデバイスを確認しましょう。

lsblk

マウントポイントなしで /dev/vdb が一覧表示されるはずです。

NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
vda    253:0    0   40G  0 disk
├─vda1 253:1    0    1M  0 part
├─vda2 253:2    0  100M  0 part /boot/efi
└─vda3 253:3    0 39.9G  0 part /
vdb    253:16   0   40G  0 disk

ファイルシステムをマウントする前に、マウントポイント、つまり空のディレクトリが必要です。一時的なマウントには /mnt を使用するか、その中にサブディレクトリを作成するのが一般的です。マウントポイントとして機能する、~/project ディレクトリ内に mydata という名前の新しいディレクトリを作成しましょう。

mkdir ~/project/mydata

次に、/dev/vdb デバイスをファイルシステムでフォーマットする必要があります。Red Hat Enterprise Linux のデフォルトである XFS ファイルシステムを使用します。このコマンドには注意してください。指定されたデバイス上のすべてのデータが消去されます。

sudo mkfs.xfs /dev/vdb

XFS ファイルシステムの作成を示す出力が表示されます。

meta-data=/dev/vdb               isize=512    agcount=4, agsize=2621440 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=1, sparse=1, rmapbt=0
         =                       reflink=1    bigtime=1 inobtcount=1 nrext64=0
data     =                       bsize=4096   blocks=10485760, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0, ftype=1
log      =internal log           bsize=4096   blocks=16384, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

/dev/vdb に XFS ファイルシステムが作成されたので、それを ~/project/mydata マウントポイントにマウントできます。mount コマンドには sudo 権限が必要です。

sudo mount /dev/vdb ~/project/mydata

ファイルシステムが正常にマウントされたことを確認するには、df -h コマンドをもう一度使用します。/dev/vdb/home/labex/project/mydata をマウントポイントとして一覧表示されるはずです。

df -h

出力で /dev/vdb を探します。

Filesystem      Size  Used Avail Use% Mounted on
...
/dev/vdb         40G  318M   40G   1% /home/labex/project/mydata

これで、~/project/mydata 内にファイルとディレクトリを作成できるようになり、それらは /dev/vdb デバイスに保存されます。テストファイルを作成してみましょう。

sudo touch ~/project/mydata/testfile.txt

~/project/mydata の内容を一覧表示して、ファイルの作成を確認できます。

ls -l ~/project/mydata

testfile.txt が一覧表示されるはずです。

total 0
-rw-r--r--. 1 root root 0 Jun 16 11:09 testfile.txt

マウントされたファイルシステムの利用を終えたら、データの破損を防ぐために、特に物理デバイスを取り外す前に、それをアンマウントすることが重要です。umount コマンドを使用して、ファイルシステムをアンマウントします。

sudo umount ~/project/mydata

アンマウントコマンドが「target is busy」エラーで失敗した場合、一部のプロセスがまだマウントポイントにアクセスしていることを意味します。これは、現在の作業ディレクトリがマウントされたファイルシステム内にある場合に多く発生します。これを解決するには、現在のディレクトリをマウントポイントの外側の場所に、たとえばホームディレクトリ (~) に変更します。

cd ~

次に、もう一度アンマウントを試してください。

sudo umount ~/project/mydata

アンマウント後、df -h をもう一度確認して、/dev/vdb がマウントされなくなったことを確認します。

df -h

/dev/vdb/home/labex/project/mydata にマウントされなくなったはずです。

Filesystem      Size  Used Avail Use% Mounted on
...
## /dev/vdb should not be listed here anymore

これで、ファイルシステムの手動マウントとアンマウントのプロセスが完了しました。

locate および find を使用したファイル名の検索

このステップでは、locate コマンドと find コマンドという 2 つの強力なコマンドを使用して、システム上のファイルを検索する方法を学びます。どちらのコマンドもファイルの検索に役立ちますが、動作が異なり、さまざまなシナリオに適しています。

locate コマンドの使用

locate コマンドは、ファイル名とパスの事前に構築されたデータベースを検索するため、非常に高速です。ただし、これは、最後のデータベース更新以降に作成または削除されたファイルが見つからない可能性があることを意味します。データベースは通常、cron ジョブによって毎日更新されますが、更新を強制することもできます。

まず、locate コマンドを提供する mlocate パッケージがインストールされていることを確認しましょう。

sudo dnf install -y mlocate

インストール中に、次のような出力が表示されます。

Last metadata expiration check: 0:00:01 ago on Mon 15 May 2023 08:00:00 AM UTC.
Dependencies resolved.
================================================================================
 Package        Architecture  Version             Repository               Size
================================================================================
Installing:
 mlocate        x86_64        0.26-28.el9         rhel-9-for-x86_64-appstream-rpms 100 k

Transaction Summary
================================================================================
Install  1 Package

Total download size: 100 k
Installed size: 230 k
Downloading Packages:
mlocate-0.26-28.el9.x86_64.rpm     100 kB/s | 100 kB     00:01
--------------------------------------------------------------------------------
Total                                            100 kB/s | 100 kB     00:01
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                        1/1
  Installing       : mlocate-0.26-28.el9.x86_64                             1/1
  Running scriptlet: mlocate-0.26-28.el9.x86_64                             1/1
  Verifying        : mlocate-0.26-28.el9.x86_64                             1/1
Installed:
  mlocate-0.26-28.el9.x86_64

Complete!

インストール後、locate データベースを更新する必要があります。このコマンドには sudo 権限が必要です。

sudo updatedb

このコマンドはサイレントに実行され、ファイルシステムのサイズによっては少し時間がかかる場合があります。

次に、passwd のような一般的なシステムファイルを検索してみましょう。

locate passwd

「passwd」を含むパスのリストが表示されます。

/etc/passwd
/etc/passwd-
/etc/pam.d/passwd
/usr/share/man/man1/passwd.1.gz
/usr/share/man/man5/passwd.5.gz
...output omitted...

大文字と小文字を区別しない検索を実行するには、-i オプションを使用します。大文字と小文字を区別せずに、「messages」を含むファイルを検索してみましょう。

locate -i messages

次のような結果が表示されます。

/usr/share/locale/zza/LC_MESSAGES
/usr/share/makedumpfile/eppic_scripts/ap_messages_3_10_to_4_8.c
/usr/share/vim/vim82/ftplugin/msmessages.vim
...output omitted...

-n オプションを使用して、結果の数を制限することもできます。最初の 5 つの「passwd」の出現箇所を見つけてみましょう。

locate -n 5 passwd

これにより、最初の 5 つの一致のみが表示されます。

/etc/passwd
/etc/passwd-
/etc/pam.d/passwd
/usr/share/man/man1/passwd.1.gz
/usr/share/man/man5/passwd.5.gz

find コマンドの使用

find コマンドはファイルシステムをリアルタイムで検索するため、locate よりも遅くなりますが、非常に最近作成されたものを含め、条件に一致するすべてのファイルが見つかることを保証します。また、はるかに強力な検索オプションも提供します。

find の基本的な構文は find [path] [expression] です。パスが指定されていない場合、現在のディレクトリが検索されます。

ルートディレクトリ (/) から始めて、sshd_config ファイルを検索してみましょう。

find / -name sshd_config

設定ファイルへのパスが表示されるはずです。

/etc/ssh/sshd_config

部分的な名前を検索したり、ワイルドカードを使用したりする場合は、シェルが早期に展開しないように、ファイル名パターンを引用符で囲むことが重要です。~/project ディレクトリで .txt で終わるすべてのファイルを見つけてみましょう。

find ~/project -name '*.txt'

前のステップで file1.txtfile2.txt、および file3.txt を作成した場合、それらが一覧表示されるはずです。

/home/labex/project/test_data/file1.txt
/home/labex/project/test_data/file2.txt
/home/labex/project/test_data/file3.txt

find で大文字と小文字を区別しない検索を実行するには、-iname オプションを使用します。/usr/share/doc ディレクトリで「README」を含むファイル (大文字と小文字を区別しない) を検索してみましょう。

find /usr/share/doc -iname '*readme*'

多くの結果が表示されます。たとえば、次のようになります。

/usr/share/doc/libselinux/README
/usr/share/doc/libsepol/README
/usr/share/doc/libsemanage/README
...output omitted...

find コマンドは非常に汎用性が高く、次のステップで説明するように、他の条件と組み合わせることができます。

所有者、パーミッション、サイズ、時間によるファイルの検索

このステップでは、名前だけでなく、さまざまな基準に基づいてファイルを検索するために、強力な find コマンドを使用する方法を学びます。これには、所有者、パーミッション、サイズ、および変更時間による検索が含まれます。これらの高度な検索機能は、監査、クリーンアップ、トラブルシューティングなどのシステム管理タスクに不可欠です。

所有者によるファイルの検索

-user オプションと -group オプションをそれぞれ使用して、特定のユーザーまたはグループが所有するファイルを検索できます。ユーザー/グループ名またはその数値 ID を指定できます。

labex ユーザーが所有するホームディレクトリ (~) 内のすべてのファイルを見つけてみましょう。

find ~ -user labex

これにより、設定ファイルなど、多くのファイルが一覧表示されます。

/home/labex
/home/labex/.bash_logout
/home/labex/.bash_profile
/home/labex/.bashrc
/home/labex/.config
/home/labex/.config/xfce4
/home/labex/.config/xfce4/xfconf
/home/labex/.config/xfce4/xfconf/xfce-perchannel-xml
/home/labex/.local
/home/labex/.local/share
/home/labex/.local/share/nano
/home/labex/project
/home/labex/project/test_data
/home/labex/project/test_data/file1.txt
/home/labex/project/test_data/file2.txt
/home/labex/project/test_data/file3.txt
...output omitted...

同様に、labex グループが所有するファイルを見つけるには、次のようにします。

find ~ -group labex

labex が通常、labex ユーザーのプライマリグループであるため、出力は似たものになります。

ユーザー ID (UID) またはグループ ID (GID) で検索することもできます。labex ユーザーは通常、UID と GID が 1000 です。

find ~ -uid 1000
find ~ -gid 1000

パーミッションによるファイルの検索

find コマンドの -perm オプションを使用すると、特定のパーミッションを持つファイルを検索できます。パーミッションは、8 進数 (例:755) または記号 (例:u=rwx,g=rx,o=rx) モードで指定できます。

特定のパーミッションを持つテストファイルを ~/project ディレクトリに作成してみましょう。

touch ~/project/permission_test.txt
chmod 644 ~/project/permission_test.txt

次に、正確に 644 のパーミッションを持つ ~/project 内のファイルを検索してみましょう。

find ~/project -perm 644

permission_test.txt が一覧表示されるはずです。

/home/labex/project/permission_test.txt

8 進数のパーミッションで、先頭に / または - を使用することもできます。

  • /: 指定されたパーミッションビットの いずれか が設定されている場合に一致します。
  • -: 指定されたパーミッションビットの すべて が設定されている場合に一致します。

他のユーザーが少なくとも読み取りパーミッション (o=r または 004) を持つ ~/project 内のファイルを検索してみましょう。

find ~/project -perm -004

これにより、permission_test.txt と、他のユーザーに読み取りアクセスを許可する他のファイルが一覧表示されます。

/home/labex/project/permission_test.txt
...output omitted...

サイズによるファイルの検索

-size オプションを使用すると、サイズに基づいてファイルを検索できます。サイズは、単位 (例:キロバイトの場合は k、メガバイトの場合は M、ギガバイトの場合は G) を指定して指定できます。「より大きい」場合は + を、「より小さい」場合は - を使用することもできます。

~/project/test_data ディレクトリで、サイズが正確に 1 キロバイトのファイルを検索してみましょう。

find ~/project/test_data -size 1k

file1.txt が表示されるはずです。

/home/labex/project/test_data/file1.txt

次に、5 キロバイトより大きいファイルを検索します。

find ~/project/test_data -size +5k

これにより、file3.txt が一覧表示されるはずです。

/home/labex/project/test_data/file3.txt

そして、10 キロバイトより小さいファイルを検索します。

find ~/project/test_data -size -10k

これにより、file1.txtfile2.txt が一覧表示されるはずです。

/home/labex/project/test_data/file1.txt
/home/labex/project/test_data/file2.txt

変更時間によるファイルの検索

-mmin (変更された分前) や -mtime (変更された日数前) などのオプションを使用して、変更時間に基づいてファイルを検索できます。

~/project ディレクトリで、過去 60 分以内に変更されたファイルを検索してみましょう。

find ~/project -mmin -60

これには、最近作成した場合は、permission_test.txttest_data 内のファイルが含まれる可能性があります。

/home/labex/project
/home/labex/project/permission_test.txt
/home/labex/project/test_data
/home/labex/project/test_data/file1.txt
/home/labex/project/test_data/file2.txt
/home/labex/project/test_data/file3.txt

1 日以上 (24 時間) 前に変更されたファイルを検索するには、-mtime+1 を使用できます。

find ~/project -mtime +1

すべての ~/project ファイルが最近作成または変更された場合、このコマンドはファイルを返さない可能性があります。

これらのオプションを組み合わせることで、非常に具体的な検索クエリを作成し、システム上のファイルを効率的に管理できます。

ファイルの種類に基づいたファイルの検索

この最終ステップでは、find コマンドを使用して、ファイルの種類に基づいてファイルを検索する方法を学びます。これは、特定のパス内のすべてのディレクトリ、通常のファイル、シンボリックリンク、またはデバイスファイルを見つける必要がある場合に特に役立ちます。

find コマンドは、ファイルの種類を指定するために、単一文字が続く -type オプションを使用します。検索できる一般的なファイルの種類を次に示します。

  • f: 通常のファイル
  • d: ディレクトリ
  • l: シンボリックリンク (symlink)
  • b: ブロックデバイス
  • c: キャラクターデバイス
  • p: 名前付きパイプ (FIFO)
  • s: ソケット

まず、~/project ディレクトリ内のすべてのディレクトリを検索することから始めましょう。

find ~/project -type d

すべてのディレクトリとサブディレクトリを一覧表示する、次のような出力が表示されるはずです。

/home/labex/project
/home/labex/project/test_data

次に、~/project ディレクトリ内のすべての通常のファイルを検索してみましょう。

find ~/project -type f

これにより、以前に作成した file1.txtfile2.txt、および file3.txt のようなファイルが一覧表示されます。

/home/labex/project/test_data/file1.txt
/home/labex/project/test_data/file2.txt
/home/labex/project/test_data/file3.txt

次に、シンボリックリンクを検索する方法を示すために、シンボリックリンクを作成しましょう。~/project ディレクトリに file1.txt へのシンボリックリンクを作成します。

ln -s ~/project/test_data/file1.txt ~/project/link_to_file1.txt

ls -l を使用して、シンボリックリンクが作成されたことを確認します。

ls -l ~/project/link_to_file1.txt

シンボリックリンクであることを示す出力が表示されるはずです。

lrwxrwxrwx. 1 labex labex 32 May 15 08:00 /home/labex/project/link_to_file1.txt -> /home/labex/project/test_data/file1.txt

次に、~/project ディレクトリ内のすべてのシンボリックリンクを検索します。

find ~/project -type l

新しく作成したシンボリックリンクが表示されるはずです。

/home/labex/project/link_to_file1.txt

最後に、ブロックデバイスを検索してみましょう。ブロックデバイスは通常、/dev ディレクトリにあります。

find /dev -type b

これにより、vdavda1vda2 などのブロックデバイスが一覧表示されます。

/dev/vda1
/dev/vda2
/dev/vda3
/dev/vda
/dev/vdb

以前のステップで学習した他の find オプションと -type オプションを組み合わせることができます。たとえば、root ユーザーが所有する /etc 内のすべてのディレクトリを見つけるには、次のようにします。

find /etc -type d -user root

これにより、長いディレクトリのリストが生成されます。

/etc
/etc/selinux
/etc/selinux/targeted
/etc/selinux/targeted/active
/etc/selinux/targeted/active/modules
...output omitted...

これで、Linux ファイルシステムへのアクセスとファイルの検索に関する実験は終了です。デバイスの識別、ディスク使用量の調査、ファイルシステムの手動でのマウントとアンマウント、およびさまざまな基準を使用した locatefind の使用方法を学びました。

まとめ

この実験では、Red Hat Enterprise Linux システムで Linux ファイルシステムを管理する実践的な経験を積みました。まず、lsblk などのコマンドを使用してファイルシステムとブロックデバイスを識別する方法を学び、ブロックデバイス、パーティション、ファイルシステム、マウントポイントなどのコアコンセプトを理解しました。次に、dfdu を使用してファイルシステムの使用状況を調べる方法を調べ、ディスク容量を報告するためのそれぞれの機能の違いを理解しました。この実験では、ファイルシステムを手動でマウントおよびアンマウントする重要なスキルもカバーし、ファイルシステムの内容をアクセス可能にし、それらを切り離す方法を示しました。

さらに、さまざまな基準を使用してファイルを効率的に見つける方法を掘り下げました。locatefind を使用して名前でファイルを検索する方法を学び、それぞれの違いと適切な使用事例を理解しました。この実験では、所有者、パーミッション、サイズ、および時間の属性に基づいてファイルを検索する方法を教えることで、システム管理とトラブルシューティングのための強力なツールを提供しました。最後に、特定のファイルの種類に基づいてファイルを検索する練習を行い、ファイルシステム管理とファイル検索技術の包括的な概要を完成させました。