この連載は、Shang Silicon Valley の Wu Shengran 氏によるLinux 入門チュートリアルの学習ノート
です。前回の連載記事は、次のリンクにあります
。
Linux 入門チュートリアル: P6->システム管理
Linux 入門チュートリアル: P7->Shell概要
Linux 入門チュートリアル: P8-> ファイル ディレクトリ
Linux 入門チュートリアル: P9-> 時刻と日付
Linux 入門チュートリアル: P10-> ユーザー権限
Linux 入門チュートリアル: P11-> ファイル検索
Linux 入門チュートリアル: P12-> 圧縮と解凍
記事ディレクトリ
1. ディレクトリが占有しているスペースを表示する
バックグラウンド
①ディレクトリの詳細表示
先ほどもお話しましたが、ls -l
やll
コマンドを使うとディレクトリの詳細情報を表示することができます。ただし、そのサブディレクトリ内にネストされたサブディレクトリがあり、多くのレベルがある場合、現時点でそれを直接見るのは不便です。この種の表示用に、Linux には別の小さなツール、tree があります。標準ツリー ディレクトリにリストしたいディレクトリの下にあるすべてのサブディレクトリ レベルをリストします。デフォルトのCentos7にはそのようなツールはなく、yum install tree
経由でインストールできます。インストールが完了したら、以下に示すように、現在のディレクトリの構造を確認します。漢字が含まれているため、これらの数字は対応する Unicode です。
②ディスク使用量の
表示 しかし、実際の操作プロセスでは、現在のディレクトリ構造を知りたいだけでなく、使用時間が長くなるとファイルディレクトリの数も増えていきます。構造はますます複雑になり、ハードディスクの占有スペースもますます大きくなります。したがって、現在のハードディスクの使用状況を常に気にする必要があります。ls -lh
現在のディレクトリの下にある各ファイルのサイズは明確にわかりますが、ls -lg /
ルート ディレクトリのファイル サイズを表示すると、サイズがわずか 28K であることがわかります。
これは、ls -lh
ここにリストされているすべてのファイルとディレクトリのサイズが単純に重ね合わされており、サイズがここにリストされている場合、各ディレクトリの合計サイズがネストされて一緒に計算されていないためです。たとえば、ここのルートは、前にも見たように、ルートには数十メガバイトのものがたくさんありますが、ここでは 4K しかなく、実際には現在のディレクトリのみがカウントされます。
したがって、私たちがさらに望んでいるのは、その下のサブファイルやサブフォルダーが占めるハードディスク容量のサイズを含む、現在のディレクトリ内のすべてのコンテンツを直接カウントできる単一のコマンドがあることです。
の
du: ディスク使用量ディスク使用量の
基本構文du 目录/文件
: (機能説明: ディレクトリ下の各サブディレクトリのディスク使用量を表示)
du を直接使用すると、現在のディレクトリ内のスペースを占有しているすべてのものがリストされます。このように見ると面倒になります。実際、比較的簡単な方法で現在のディレクトリのサイズを確認したいだけです。現在のディレクトリのサイズである最後の行を直接確認することができます。もちろん、du には出力をよりわかりやすくするためのオプションが多数あります。
オプションの説明:
-h
GBytes、MBytes、KBytes など、読みやすい形式で表示します。
-a
サブディレクトリのサイズを確認するだけでなく、ファイルも含めます。
-c
すべてのファイルとサブディレクトリのサイズを表示した後、合計を表示します。
-s
表示のみ統計
--max-depth=n
サブディレクトリの深さを階層nの例として指定します
:du -ah
簡易表示を使用します。現在のディレクトリのサイズの合計を表示する
ために使用します。 現在のディレクトリのサイズの合計を表示するために使用します。ただし、深さの最初のレベルのみが表示されます。du -sh
du --max-depth=1 -ah
次に、ディスク使用量を確認します
バックグラウンド
を使用してルート ディレクトリのサイズを表示できるようになり
du -sh /
、サイズが 11G であることがわかります。
ただし、これは現在のハードディスクの合計サイズではなく、見た目は似ていますが、実際のディスクと同じではありません。システムをインストールする前に、ディスクパーティションの操作を行い、ブートパーティション、スワップパーティション、ルートパーティションに分割しました。通常、使用するすべてのファイルはこのルート パーティションに保存されます。Linux ファイル システムは仮想ディレクトリであるため、ディレクトリ構造からどのディスクがどれだけのスペースを占有しているかを確認する方法はありません。現時点では、du コマンドは使用できません。使用する必要がありますdf
。
DF
df:disk free free disk の基本構文
:df 选项
(機能の説明: ファイル システムの全体的なディスク使用量を一覧表示し、ファイル システムのディスク領域使用量を確認します)
例:df -h
以下に示すように、ディスク使用量を表示するために使用します。
以下のことがわかります:
①以前にルート パーティションに 55G メモリを割り当て、対応するデバイスは次のとおりです。 ②/dev/sda3
以前にブート パーティションに 1G メモリを割り当て、対応するデバイスは次のとおりです。/dev/sda1
③残りは、実際にはディスクが占有しているすべての情報ではないためです。このファイルシステムは、一時ファイルシステムを意味する tmpfs または dvtmpfs と呼ばれ、dev ディレクトリの下で管理されていないことがわかります。
メモリベースのファイル システム
Linux の特殊なタイプのファイル システムです。したがって、ここにはハードディスクのディスプレイだけでなく、メモリに対応するデバイスのディスプレイもあります。
質問:メモリによって設定される一時ファイル システムに対応するデバイスの種類は何ですか?
答え:実メモリとスワップ パーティションです。スワップ パーティションは主にメモリとページを交換するために使用され、仮想メモリとして使用できるため、2 つのファイル システムは一貫しており、どちらも一時ファイル システム tmpfs を使用します。
ここで非常にはっきりとわかります:
① ファイル システム tmpfs があり、マウント ポイントは です/dev/shm
。shm は共有メモリ、つまり共有メモリです。つまり、このメモリ空間はすべてのシステム プロセスによって共有され、これらすべてのプロセスがこのディレクトリにアクセスできます。このメモリのサイズは、デフォルトではシステム メモリの半分の 2G です。
② ファイルシステム tmpfs があり、マウントポイントは/run
。これらはすべてランタイムに関連しているため、メモリと仮想メモリのスワップ パーティションはシステムまたはランタイムに関連するものと考えることができます。
③ ファイル システム devtmpfs があります。これは、Linux カーネルが起動時にファイル システムを作成し、次に/dev
現在のファイル システムのマウント ポイントであるディレクトリを作成することを意味します。これは主に現在のすべてのデバイスを管理するために使用されます。したがって、これら 4 つの 2G を合計すると 8G になります。この時点でスワップには 4G が割り当てられ、メモリ自体も 4G なので、合計は 8G になります。
無料
例:
free -h
メモリ使用量を表示するために使用します。
現在の物理メモリと仮想メモリ (スワップ パーティション) の合計領域、使用されている領域、空き領域、および共有されているメモリ領域を確認できます。
3. デバイスの実装状況を確認する
lsblk
機能説明:デバイスの実装状況を表示します。
前の 2 つのコマンドでは実際のディスク情報を詳細に確認できませんでしたが、lsbkc では確認できます。lsblk は list block の略で、現在のすべてのブロックデバイス (ハードディスクや光ディスクなどの記憶装置) の実装状態をリストします。
例:ディスクのマウント状況を表示する場合に
使用します。以下のことがわかります。①現在ストレージ デバイス sda があり、そのタイプはディスク ハードディスクです。②このハードディスクは 3 つのパーティションに分かれています。③後ろのマウントポイントが対応するマウントポイントです。④最初のブート パーティションはブートの下にマウントされ、2 番目のスワップ パーティションはスワップの下にマウントされ、最後のパーティションはルート ディレクトリの下にマウントされます。これらのパーティションも、最初に割り当てたサイズと同じです。ハードディスク sda、cdromに加えて、 の下にもう 1 つあり、そのタイプは rom であることがわかります。システムのインストールには CD を使用し、CD ドライブを使用して ISO イメージ ファイルをロードし、CD ドライブからシステムを起動しました。現在、その CD 内の情報は使用されておらず、直接マウントされていませんが、CD-ROM デバイスはまだ存在しており、そのタイプは cdrom です。すべてのデバイスは /dev/ ディレクトリの下にあり、そこから見つけることができます。完全な情報を表示するを使用します。sr0のタイプはb、つまりblock、ブロック記憶装置であることがわかります。これに加えて、 sr0 に直接リンクされたソフト リンク (タイプは ) である cdrom があります。これは、Linux が管理の便宜のために、sr0 に cdrom というよりわかりやすい名前を直接付けたためです。lsblk
sr0
ls /dev/ | grep sr0
ll /dev/ | grep sr0
l
ハードディスクの名前の由来
lsblk を使用してデバイスのマウント ステータスを表示すると、ハードディスクに応じて、
sda
、hda
、などの異なる名前が表示されますvda
。ここでは主に、最も一般的な最初の文字の意味を見ていきますsda
。パソコンやサーバーに関わらず、私たちが使用するハードディスクはインターフェースの種類により主に以下のカテゴリに分類されます。 ① : 初期のハードディスクはIDEを
多くIDE硬盘
使用していましたが、現在は読み取りと書き込みが可能なため、IDEを使用することが少なくなりました。性能は比較的高いですが、違いはあります。
②SATA硬盘
: ホットスワップ対応のシリアルATAインターフェース仕様のハードディスクです。従来の IDE ハードディスクと比較して、はるかに高速で、データ保存容量が大きく、コストも低いため、現在、私たちのパソコンでは SATA ハードディスクが一般的に使用されています。
③SCSI硬盘
:
SCSI はコンピュータ システムの標準インターフェイスであるため、ハード ドライブだけでなく、光学ドライブやスキャナなどのさまざまなコンピュータ周辺機器もこのインターフェイスを使用できます。そのため、本体自体にデータ操作とデータ送信用の専用コントローラーがあり、データ送信速度が速くなります。サーバーにはより強力なパフォーマンスが必要なため、SCSI ハードディスクの数が増加します。以前に仮想マシンの構成を行ったとき、デフォルトのハードディスクとして SCSI ハードディスクを選択しました。
ハードディスクパーティションの命名に関する Linux ルール
①IDEハードディスクなど複数のハードディスクがある場合、名前はすべて
HD
先頭から始まります。最初のハードディスクは HDA、2 番目のハードディスクは HDB と呼ばれます。
②SATA または SCSI ハードディスクが複数ある場合は、すべてSD
起動します。同様に、1 台目のハードディスクを SDA、2 台目のハードディスクを SDB と呼びます。
③仮想化アナログデバイスを使用する場合は、VD
から始めます。
各ハードディスクをパーティション分割する必要がある場合は、名前の後に番号 1、2、3... を追加するだけです。先ほどは sda1、sda2、sda3 を見てきました。
lsblk -f
lsblk -f : 詳細なデバイス マウントを表示し、ファイル システム情報を表示します。
例:を使用するとlsblk -f
、ファイルシステム情報を確認できます。
以下のことがわかります。
① 現在のハードディスクとパーティション名、およびその後のマウント ポイントという 2 つの主要な情報に加えて、ファイル システムのタイプもあります。
②当時は64ビットの高性能ログファイルシステムであるXFSを選択しました。この時点で第 4 世代拡張ファイル システム EXT4 を選択した場合、ここでの表示は EXT4 になるはずです。
③2番目のパーティションのファイルタイプは異なります。スワップです。
④ 各パーティションの後ろには UUID という文字列があります。UUID は、現在のパーティションごとにシステムによって作成される、合計 40 ビットの一意のシンボルです。この ID を使用して、現在のパーティションを一意に指定します。
4番目、マウントとアンインストール
バックグラウンド
①マウントされたハードディスクに加えて、その下にCDもあることに気づきました。すべてのデバイスがディレクトリに対応する必要があるため、このディスクにはマウント ポイントがないため、直接アクセスできません。/dev/ の下にはデバイス ファイルがあり、CD 内でファイルを見つけることは絶対に不可能です。ディスクの内容を見つけるには、ディスクがどこかにマウントされている必要があります。
②ハードディスクのパーティションの話のときにマウントポイントについて触れましたが、現在ハードディスクがあり、ブートパーティション(1G)、スワップパーティション(4G)、ルートパーティション(45G)の3つのパーティションに分割しています。通常、操作を実行するときに、大きなファイルをどのパーティションに直接配置するかは指定されません。一般に、ファイル システムには、ルート ディレクトリ、ルート ディレクトリ、ホーム ディレクトリなどの多くのディレクトリが含まれます。これで、このファイルを対応するディレクトリに直接置くことができます。
③このディレクトリはハードディスク上のどの保存場所に対応しますか? この対応関係は、マウント ポイントと呼ばれるマッピングによって表す必要があります。ファイルシステムは本来、仮想的なディレクトリ構造であり、このディレクトリを使用する場合、その基になる格納場所がどこであっても気にする必要はありませんが、Linux では、ハードディスクのパーティション分割時に一度設定されていれば、この対応関係を知る必要があります。 、後で心配する必要はありません。
④ この構成プロセス中に、最初のパーティションのマウント ポイントがブートの下にマウントされていることがわかります。そのため、ブート ディレクトリ内のすべてのファイルは G の最初のパーティションのディスク領域に保存されます。2 番目のパーティションの 4 G はスワップ パーティションです。ここにはファイルは置きません。これはスワップ パーティション、つまり仮想メモリです。最終的に、45 G はルート ディレクトリに直接マウントされるため、ブート ディレクトリ内の内容を除いて、すべてこのルート ディレクトリの拡張子に基づくブランチになります。したがって、残りのすべてのファイルとフォルダーは 3 番目のパーティションの 45G スペースに保存されます。
⑤これで別の CD ができました。これ以上パーティションを作成する必要はありませんが、現在の CD 内のファイルも考慮する必要があります。このディスクにマウント ポイントを設定してマウントする限り、ファイル システムを通じてアクセスできます。前に、/mnt/ というディレクトリがあり、これによって外部ストレージ デバイスをマウントできると述べました。そのため、この CD を /mnt/ ディレクトリの下にマウントし、このディレクトリで CD の内容にアクセスできるようになります。
マウント/アンマウント
準備:
次に実際の操作をしていきますが、CD をマウントしたいので、まずこの CD を用意する必要があります。Centos をインストールするときにイメージ ファイルを使用できます。最初に仮想マシン上でいくつかの構成を行います。どの画像ファイルを選択し、接続済みのステータスを選択します。
デスクトップに戻ると、ここにディスク アイコンが表示されますが、これは Windows と同じで、デフォルトでシステム全体のデスクトップ環境が設定されており、直接マウントされます。ロード後、直接クリックして内部のコンテンツを確認できます。
ただし、デスクトップ上で CD-ROM ファイルに直接アクセスするのではなく、コマンド ラインからアクセスしたいと考えています。まず、現在のイメージ ファイルのマウント ポイントがどこにあるかを確認しましょう。lsblk
それを確認することができます。
ここで、mount コマンドを手動で試してみたいので、最初にコマンドを取り出します。
実装されていないことがわかります。
mount
の基本構文:mount [-t vfstype] [-o options] device dir
(機能説明: デバイスのマウント)
パラメータ機能: 以下の図に示すように、
/mnt の下に新しい cdrom フォルダーを作成し、そこに CD をマウントする準備をします。
先ほどポップアップ操作を行ったため、ここにメディアが見つからないことが直接述べられています。CD/DVD を取り出した後は、再度接続しません。ここにグラフィカル インターフェイスがあるため、もう一度 [接続] を選択すると、自動的にマウントされます。
解決策:
① まずログアウトします。
② 次に、「接続済み」を選択します。
③最後に再度ログインしてlsblkで自動マウントされないことを確認します。
そこで、mount コマンドを再度実行しますmount /dev/cdrom /mnt/cdrom/
(cdrom を sr0 に置き換えることもできます)。マウントが成功したことがわかります。
再度実行すると、マウントが成功したことも確認できますlsblk
。
/mnt/cdrom/ と入力し、ls をクリックして CD のファイルの内容を表示します。
umount
の基本構文:umount 设备文件名或挂载点
例:umount /mnt/cdrom
sr0/cdrom をアンマウントするために使用します。
このディレクトリに再度アクセスすると/mnt/cdrom
、このディレクトリはまだ存在しますが、その中には何もないことがわかります。
自動マウントを設定する
背景:起動して入るたびに、デフォルトで上記のディスクを認識し、事前に分割したパーティションのように直接マウントできることを望みます。
自動マウント:/etc/fstab
構成ファイルを変更する必要があります。
自動マウント設定を行う場合、fstab(ファイルシステムタブ)という設定ファイルを変更する必要があります。中に入って何が入っているか見てみましょう。
実際には、すべてのデバイスのマウント情報が含まれていることがわかります
。①マウント ポイント、UUID、および 3 つのパーティションのファイル タイプ。
② 最後に 2 つの 0 があり、その意味は次のとおりです。
----最初の 0 はダンプ オプションを意味します。システムをインストールするときに、kdump というチェック ボックスがあったので、これを直接削除しました。kdump の主な目的はシステム全体の定期的なバックアップを作成することであり、障害が発生した場合は前の状態に直接ロールバックできるため、このフラグはバックアップを作成するかどうかを示します。ここで 1 を指定すると、バックアップ操作が毎日定期的に実行されることを意味し、0 はバックアップを実行しないことを意味します。
---- 2 番目の 0 は、現在のファイル システム チェックの優先順位を示します。ファイルシステムチェックと呼ばれるコマンドがありfsck
、現在のファイルシステムをチェックして修復するために使用されます。システムは起動時にデフォルトでこのコマンドを使用してファイルシステムをチェックしますが、チェックする際は、ここで設定した優先順位に従ってファイルシステムをチェックする順序が決定されます。ここで 1 に設定すると、優先度が最も高く、通常はルート ディレクトリが 1 に設定されます。2に設定すると、1の全検査を待ってから2を検査します。チェックなしを示すために 0 に設定し、起動時にファイル システムをチェックするために fsck を使用しません。
情報を追加: UUID を記述する必要はなく、デバイス名を直接記述するだけです。次に、マウント ポイント、ファイル タイプ、デフォルト オプション、2 つの 0 が続きます。
5、ディスクパーティション
バックグラウンド
これで、次のことが分かりました:
①現在のハードディスクの使用状況を確認する
②現在のブロック デバイスのマウント ステータスを確認する
③新しく追加したデバイスのマウントを検討する
:以前にマウントした CD のハードディスクをマウントする場合はどうすればよいですか? これは単なるマウントの問題ではなく、まずパーティションに分割し、次にさまざまなファイル システム タイプに従ってフォーマットし、最後にマウント ポイントを設定します。ハードディスクのパーティションのフォーマット操作には、 という特別なコマンドがありますfdisk
。
fdisk -l
fdisk -l
: 現在のディスクのパーティションの詳細を確認するだけで、表示されるlsblk
パーティション情報よりも詳細な情報が表示されます。
例:現在のディスクのパーティションの詳細を表示します。① ディスク名:/dev/sda ② ディスクサイズ:64.4GB ③ 特定のバイト数、セクタ数、論理セクタサイズ、物理セクタサイズ、IO サイズ、対応するラベルタイプ、およびシンボル④ の
情報各パーティション: ----デバイス: パーティション名、ここでは sda1、sda2、sda3 です----ブート: 現在のブート パーティション (ブート パーティション) であるかどうかを示します。ここにアスタリスクがある場合は、これがブート パーティションであることを意味します。ここで、sda1 のマウント ポイントが boot であることは明らかです。----開始と終了: パーティションの開始と終了の場所。構成の最初は常に 2048 から開始するため、現在のサイズは少し空いています。----ブロック: 現在のパーティションの容量----ID: 現在のパーティション タイプの ID ----システム: 現在のシステム パーティションのタイプ。2 つのパーティション sda1 と sda3 はシステムの標準パーティションであり、その名前は Linux と呼ばれます。2 番目のスワップ パーティションは、Linux スワップまたは Salaries です。
fdisk
一部の構成:
現在、ハードディスクが 1 台しかないため、別のハードディスクを追加する必要があります。
デフォルトのディスク タイプは SCSI で、新しい仮想ディスクを作成します。ディスク サイズは 20GB、デフォルト名です。次に、チェックする
新しいハード ディスクがあることがわかります。まだ元の sda ハード ディスクのみが存在していることがわかります。そうすれば、入力にはハードディスク sda しかないことがわかります。これは、ハードディスクはホットスタートやホットスワップが可能な CD とは異なり、すぐに再起動する必要があるため、直接再起動するためです。今すぐ実行すると、sdbがあることがわかります。実行すると、もう 1 つ sdb があり、そのタイプもハードディスクであることがわかります。その下にはパーティションはなく、マウントポイントもないため、次に行う必要があるのは sdb の処理です。
fdisk -l
lsblk
lsblk
fdisk -l
ハードディスクのパーティション
基本構文:
fdisk 硬盘名
ここで実行するfdisk /dev/sdb
と、ここに非常に明確な中国語プロンプトが表示されます。
ヘルプを表示するには M と入力します。
使用できる主なコマンド操作は次のとおりです:
n
: 新しいパーティションを追加します。
q
: 変更を保存せずに終了します。
w
:保存して終了します(パーティションテーブルの情報をハードディスクに書き込み、直接終了します)。
p
: 現在のパーティション テーブルの情報を出力します。これは、外部で fdisk -l によって表示される情報と同じです。ただし、表示されるのはディスク sdb 自体の情報のみである点が異なります。パーティションを入力し、選択する必要があります
。n
パーティションのタイプ。
p
:p はプライマリ、つまりプライマリ パーティションを指します。Linux の場合、1 つのディスクに最大 4 つのプライマリ パーティションがあります。e
: さらにパーティションを分割したい場合は、ここでプライマリ パーティションを拡張パーティションに置き換えることができます。拡張パーティションに置き換えると、複数の論理パーティションを拡張できますが、厳密に言えば、論理パーティションは実際のパーティションではありません。論理パーティションの最大数は 12 に分割できます。最初の 4 つのプライマリ パーティションは 1 2 3 4 で、後続の拡張パーティション番号は 5 ~ 16 です。
ここでは「p」と入力するか、単に Enter キーを押します。次に、パーティション番号を入力します。1 を直接入力できます。
次に、デフォルトのオプションを選択し、開始セクターを 2048 に、パーティション サイズを 20G に設定し、
p と入力して表示します。
次に、w を押して直接保存して終了し、ディスクの同期を開始し、
入ってlsblk -f
表示すると、sdb のパーティション情報がすでに存在していることがわかります。ただし、ここにはファイル システムも UUID もないため、システムはそれを認識する方法がありません。フォーマットしていないので、どのファイルシステムを使用すればよいのかわかりません。当然、UID は割り当てられず、対応するマウントポイントもありません。
フォーマット
基本的な構文:
mkfs -t 文件系统类型 设备名
(ファイルシステムの作成)
と入力するとmkfs -t xfs /dev/sdb1
、結果は次のようになります。
「」と入力するlsblk -f
と、ここの型も存在し、その背後にある UUID も存在することがわかります。これがマウントの最後のステップです。
マウント
考え中:次は sdb1 をどこにマウントしようか? 以前は sda という 3 つのパーティションを持つハードディスクがありました。最初のパーティションはブートの下にマウントされ、2 番目のパーティションはスワップ、3 番目のパーティションはルート ディレクトリの下に直接マウントされます。ブート中のコンテンツを除いて、他のすべてのコンテンツはハードディスク sda の 3 番目のパーティションに保存されているため、保存されているものが多すぎます。/home/ ディレクトリの下に、atguigu などのさまざまな一般ユーザーのホーム ディレクトリはありますか? atguigu の下にあるすべてのものを新しいハードディスク、つまり sdb を追加した新しいハードディスクに置きたいと考えています。基本的な構文を
マウントします。 と入力すると、sdb1 が atguigu の下にマウントされていることがわかります。テスト:現在のハードディスクが占有しているスペースを確認するために使用します。初期設定情報の一部は、33MB を占有している現在の sdb ディスクに書き込まれています。大きなファイル (xshell インストール パッケージ) を /home/atguigu にコピーすると、sdb1 の使用サイズが大きくなっていることがわかります。mount 设备名 挂载点
mount /dev/sdb1 /home/atguigu/
df -h
アンインストール
を使用して
umount /dev/sdb1
sdb1 をアンインストールし、それを使用して、df -h
sdb 情報がなくてもアンインストールが成功したことを確認します。このハードディスクはまだ認識できますが、アンインストールされているため、対応するファイルにアクセスできません
。/athhuigu ディレクトリも sda3 パーティションに分割されているので、atguigu 配下の内容を確認してみると、インストール パッケージはなく、これら 2 つの設定ファイルのみがあることがわかります。lsblk