Narumi Nogawa
    • Create new note
    • Create a note from template
      • Sharing URL Link copied
      • /edit
      • View mode
        • Edit mode
        • View mode
        • Book mode
        • Slide mode
        Edit mode View mode Book mode Slide mode
      • Customize slides
      • Note Permission
      • Read
        • Only me
        • Signed-in users
        • Everyone
        Only me Signed-in users Everyone
      • Write
        • Only me
        • Signed-in users
        • Everyone
        Only me Signed-in users Everyone
      • Engagement control Commenting, Suggest edit, Emoji Reply
    • Invite by email
      Invitee

      This note has no invitees

    • Publish Note

      Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note

      Your note will be visible on your profile and discoverable by anyone.
      Your note is now live.
      This note is visible on your profile and discoverable online.
      Everyone on the web can find and read all notes of this public team.
      See published notes
      Unpublish note
      Please check the box to agree to the Community Guidelines.
      View profile
    • Commenting
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
      • Everyone
    • Suggest edit
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
    • Emoji Reply
    • Enable
    • Versions and GitHub Sync
    • Note settings
    • Note Insights New
    • Engagement control
    • Make a copy
    • Transfer ownership
    • Delete this note
    • Save as template
    • Insert from template
    • Import from
      • Dropbox
      • Google Drive
      • Gist
      • Clipboard
    • Export to
      • Dropbox
      • Google Drive
      • Gist
    • Download
      • Markdown
      • HTML
      • Raw HTML
Menu Note settings Note Insights Versions and GitHub Sync Sharing URL Create Help
Create Create new note Create a note from template
Menu
Options
Engagement control Make a copy Transfer ownership Delete this note
Import from
Dropbox Google Drive Gist Clipboard
Export to
Dropbox Google Drive Gist
Download
Markdown HTML Raw HTML
Back
Sharing URL Link copied
/edit
View mode
  • Edit mode
  • View mode
  • Book mode
  • Slide mode
Edit mode View mode Book mode Slide mode
Customize slides
Note Permission
Read
Only me
  • Only me
  • Signed-in users
  • Everyone
Only me Signed-in users Everyone
Write
Only me
  • Only me
  • Signed-in users
  • Everyone
Only me Signed-in users Everyone
Engagement control Commenting, Suggest edit, Emoji Reply
  • Invite by email
    Invitee

    This note has no invitees

  • Publish Note

    Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note

    Your note will be visible on your profile and discoverable by anyone.
    Your note is now live.
    This note is visible on your profile and discoverable online.
    Everyone on the web can find and read all notes of this public team.
    See published notes
    Unpublish note
    Please check the box to agree to the Community Guidelines.
    View profile
    Engagement control
    Commenting
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    • Everyone
    Suggest edit
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    Emoji Reply
    Enable
    Import from Dropbox Google Drive Gist Clipboard
       Owned this note    Owned this note      
    Published Linked with GitHub
    • Any changes
      Be notified of any changes
    • Mention me
      Be notified of mention me
    • Unsubscribe
    # CH5 デバイスとLinuxファイルシステム 理解しておきたい用語と概念🔥 - `デバイスファイル` - `パーティション` - `ファイルシステム` - `ext2/3/4、XFS、VFAT、exFAT` - `mount/unmount` - `/etc/fstab` - `ジャーナリングファイルシステム` - `FHS(Filesystem Hierarchy Standard)` ## 5.1 パーティションとファイルシステムの作成 ディスク(ハードディスクやSSDなど)を利用する流れ: ディスク接続→パーティション作成→ファイルシステム作成→マウント #### ファイルシステム ディスク上のデータをファイルとして管理する仕組み。 #### パーティション PCの記憶媒体、HDDやSSDその他メモリスティックなどに設定できる論理的な区画のこと。 ### 5.1.1 ハードディスク #### 接続形態の規格 - SATA - SAS - SCSI - USB #### デバイスファイル デバイスへの入出力を扱うために必要なファイル。 OSが、コンピュータに接続したデバイスをファイルシステム上のファイルのように扱え、ファイルの読み書きと同じ手順でデバイスの制御ができるようになる。 ファイルと同じ要領でアクセス - デバイスへの出力⇆デバイスファイルへの書き込み - デバイスからの入力⇆デバイスファイルの読み込み #### Linuxが扱うデバイス - ブロックデバイス - ハードディスク(やパーティション)やSSDなど、メディア上の任意の場所にアクセスできるデバイスのこと - `lsblk`:ブロックデバイス一覧を表示 - キャラクタデバイス - キーボードやシリアルポートなど、文字単位でデータを読み書きするデバイスのこと ディスクやパーティションはブロックデバイス、と知ってればOK 主なデバイスファイル | ファイル名 | 説明 | | --- | --- | | /dev/sda | 1番目のハードディスク | | /dev/sdb | 2番目のハードディスク | | /dev/sdc | 3番目のハードディスク | | /dev/sdd | 4番目のハードディスク | | /dev/sr0 | 1番目のCD/DVDドライブ | | /dev/st0 | 1番目のテープドライブ | :::danger 🚨ここが重要 各デバイスファイル名を”暗記”すべし ::: ### 5.1.2 パーティションの種類 1台のディスクドライブを複数の論理的な区画(パーティション)に分割でき、各パーティションには異なるファイルシステムを作成できる。 パーティションにはラベルを付けれる(`/etc/fstab`ファイルで使うかも👀後述)。 #### 基本パーティション - 内部にファイルシステムを格納する - ディスク内に最大4つ作成できる - デバイスファイル名は、ハードディスク`/dev/sda`の場合、`/dev/sda1 ~ sda4`となる #### 拡張パーティション - 内部に論理パーティションを格納する - 基本パーティションの一つを拡張パーティションにすることができる - ※UEFIベースのシステムでは使われない #### 論理パーティション - デバイスファイル名は、`/dev/sda5`以降になる ``` disk - 基本1 - 基本2 - 基本3→拡張 - 論理1 - 論理2 - 論理3 - 基本4 ``` #### パーティション分割するメリット 障害発生時の影響を一つのパーティション内に抑えることができる✌️ :::danger 🚨ここが重要 パーティションの種類と役割を”理解”すべし ::: ### 5.1.3 ルートファイルシステム - Linuxのディレクトリは木構造で、その頂点が`/` - ルートファイルシステム - `/`ディレクトリを含むファイルシステムのこと - 直下に`/home`や`/var`を配置する - 耐障害性や保守性を高めるために、ディスク上に複数のパーティションを用意して各パーティションに`/home`や`/var`を割り当てる - `/home`や`/var`は`/`以下にマウント(後述)され、1つのファイルシステムとして運用できる ### 5.1.4 パーティション管理コマンド :::warning ⚠️コマンド取扱注意 ::: #### `fdisk`コマンド - パーティションの作成、削除、変更、情報表示など - `-l`:デバイスのパーティションテーブルの状態を表示する 実行例 `# fdisk -l /dev/sda` ```bash ubuntu@lts:~$ sudo fdisk -l /dev/sda Disk /dev/sda: 10 GiB, 10737418240 bytes, 20971520 sectors Disk model: QEMU HARDDISK Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: gpt Disk identifier: 749D7C21-A688-49F2-B8BA-495B3A40591F Device Start End Sectors Size Type /dev/sda1 206848 20971486 20764639 9.9G Linux filesystem /dev/sda15 2048 204800 202753 99M EFI System Partition table entries are not in disk order. ``` #### `gdisk`コマンド - GPT対応のパーティション操作をする - サブコマンドはfdiskと同じ :::info GPT(新方式)とMBR(従来方式)について(※skip🙇 - GPT(GUIDパーティションテーブル) - パーティションテーブルの方式の一つで、最大128個までパーティションを作成できる - MBR(マスターブートレコード) - 扱えるハードディスク容量は2TBまでで、基本パーティションを4個作成できる ::: #### `parted`コマンド MBRもGPTにも対応したパーティション操作コマンド。 `fdisk`, `gdisk`と同様に対話形式で実行できるが、`-s`で一括で処理を実行できる。 :::info 💡`fdisk`, `gdisk`は書き込み完了後に初めてパーティションテーブルに反映されるが、`parted`では即座に反映される ::: ### 5.1.5 ファイルシステムの作成 ファイルの読み書きには、パーティション内にファイルシステムを作成することが必要。 #### ファイルシステム ディスク上のデータをファイルとして扱う仕組み。 こいつのおかげで 「182945セクタと182946セクタのデータを取り出す」を 「/dataディレクトリ下のsales.txtファイルを開く」とできる👏 :::success 【共有】 セクタとブロック(※skip - セクタは、HDDの"物理的な"最小単位 - 通常、1セクタは512byteで、CD-ROMでは2048byteと媒体によってまちまち - ブロックは、HDDの"仮想的な"最小単位 ファイルシステムではブロックという単位でデータを管理する。 これにより、プログラムは、物理的な媒体の種類に関わらずブロック単位でデータを扱える。 →ブロックが媒体の差異を吸収👏 ::: Linuxのファイルシステムでは、「ファイルの中身」と「ファイルの属性や管理情報」は別々に保存する。 #### iノード(index node) 「ファイルの属性や管理情報」を格納する領域。 ファイルシステム作成時に用意され、ファイルやディレクトリを作成するたびに1つずつ割り当てられる(有限)。 #### `mkfs`コマンド パーティション上にファイルシステムを作成する。 内部で、作成するファイルシステムに対応したコマンドを呼び出す。 - Ex. ext4ファイルシステムを`/dev/sdb1`に作成 - `# mkfs -t ext4 /dev/sdb1` #### `mke2fs`コマンド ext2/3/4ファイルシステムを作成する。 ext2/3/4ファイルシステムを作成すると、デフォルトでは5%の領域がrootユーザ用に予約される。 - rootユーザのみが書き込める領域 - 万が一ディスクの空きがなくなってもrootユーザが作業ができるよう確保 - `mke2fs`や`tune2fs`でサイズを変更可 - reference:[Linux ext3 や ext4 の予約領域の変更](https://kt-hiro.hatenablog.com/entry/20140413/1397384816) :::info (Linuxで扱える)ファイルシステムの種類(※skip🙇‍ | 名前 | 説明 | | --- | --- | | `ext4` | Linux用に開発されたファイルシステム。現在、多くのディストリビューションで採用されている。 | | `XFS` | CentOS7/RHEL7で標準。`IRIX`というUNIXのファイルシステムとして開発された。 | | `JFS` | IBMが作った。元々は`AIX`というUNIXのファイルシステム。 | | `Btrfs` | ext2/3/4ファイルシステムの欠点を解消し、その他先進的な機能を取り入れたファイルシステム。 | ::: :::info ext4とBtrfsの違い(ざっくり) - ext4はジャーナリングファイルシステム、一方Btrfsはコピーオンライトファイルシステム - ジャーナリングファイルシステムは、[XFS](#524-XFS)にて後述 - 複数のデバイスをまとめてファイルシステムを構築できる(いわゆるRAIDを標準サポートしている) - reference: [Btrfs vs Ext4 – Functionalities, Strengths, and Weaknesses](https://linuxopsys.com/topics/btrfs-vs-ext4) ::: #### Btrfs(B-tree file system) Linux向けの新しいファイルシステム。耐障害性に優れ、先進的な機能を持つ。 `mkfs.btrfs`コマンドで作成する。 主な特徴 - 複数の物理ボリューム(パーティションやディスク)をまとめて1つの仮想的なボリュームを作成できる(ストレージプール) - 複数の物理ボリュームにまたがってファイルシステムを作成できる(マルチデバイスファイルシステム) - ファイルシステムを分割したサブボリュームを利用できる - スナップショット(ある時点におけるファイルシステムの状態を記録したもの)を作成できる - サブボリューム(後述)単位で作成する - ファイルシステムをアンマウント(後述)することなくバックアップできる :::success 【共有】スナップショットやサブボリュームの利点(※skip🙇‍♂️ - 参考:[Btrfsを13年使ったのでその経験の話](https://chienomi.org/articles/linux/202203-btrfs.html) - もしスナップショット上のあるファイルが他のサブボリューム上のファイルと同じ内容同じ実体のままであれば、実体はひとつとなる。しかし、もとのサブボリュームのファイルが書き換えられた場合、その瞬間に別のファイルになる。 - →ハードリンクを用いた差分バックアップをものすごく便利にしたような形になっている - バックアップしたい、あるいは必要に応じて巻き戻したい単位にサブボリュームを切ることで取り回しがとても良くなる - スナップショットを使うことで間違ってファイルを消してしまうようなヒューマンエラーに対してリカバリーが効く - 外側のボリュームから見るとサブボリュームはただのディレクトリに見え、そのディレクトリに対して書き込みを行っても問題ない ::: <img src="https://www.ibm.com/docs/ja/ST3FR7_8.2.1/com.ibm.storwize.v7000.821.doc/svc_mdiskgrp_21iipo.gif" alt="ストレージ・ブール" width="600px"> 画像出典:[IBM ストレージ・プール](https://www.ibm.com/docs/ja/flashsystem-7x00/8.2.x?topic=overview-storage-pools) :::danger 🚨ここが重要 Btrfsの特徴と用語を”理解”すべし ::: #### `mkswap`コマンド パーティション上にスワップ領域を作成する。 通常、スワップ領域として、独立したパーティションを割り当てる。 (システムには最低一つのスワップ領域が必要) ## 5.2 ファイルシステムの管理 ### 5.2.1 ディスク利用状況の確認 #### `df`コマンド ファイルシステムの容量を確認する。 - `-h/-H`オプション:容量の単位をM(1,048,576/1,000,000)として表示 - `df -i`:iノードの使用状況を確認 ```bash ubuntu@lts:~$ df -i Filesystem Inodes IUsed IFree IUse% Mounted on tmpfs 251781 654 251127 1% /run /dev/sda1 1296640 107214 1189426 9% / tmpfs 251781 1 251780 1% /dev/shm tmpfs 251781 3 251778 1% /run/lock /dev/sda15 0 0 0 - /boot/efi tmpfs 50356 25 50331 1% /run/user/1000 ``` #### `du`コマンド ファイルやディレクトリが占める容量を表示する。 #### ファイルシステムに書き込めなくなる原因 - 空き容量の不足 - 解決策 - 不要なファイルを削除する - 別パーティションに新しいファイルシステムを作成する - iノードの不足 - iノードはファイルシステム作成時に設定され、後から追加、変更できない - 枯渇すると、新規ファイルの保存ができない :::info 💡NOTE - ファイル保存時に、ファイルの中身はデータブロックに、属性情報はiノードブロックに情報が書き込まれる(物理的な保存位置はバラバラ) - どちらかの書き込みが失敗すると生合成が取れなくなる - 整合性は`fsck`コマンドで確認できる🙆 ::: ### 5.2.2 ファイルシステムのチェック #### `fsck`コマンド ディスクのチェック、破損の修復を行う。 - 対象のファイルシステムはアンマウントすること(or読み取り専用でマウント) - 実体はファイルシステムごとに用意されたチェックプログラム - Linux起動時に自動実行 - `/etc/fstab`でfsckの対象に指定しているファイルシステムをチェック ```bash ubuntu@lts:~$ cat /etc/fstab LABEL=cloudimg-rootfs / ext4 discard,errors=remount-ro 0 1 LABEL=UEFI /boot/efi vfat umask=0077 0 1 ``` #### `e2fsck`コマンド ext2/3/4用のチェック・修復コマンド。 :::info 💡ファイルシステム破損の原因 - 参考①[ファイル破損・データ破壊の原因と対策](https://jisaku-pc.net/hddhukyuu/archives/585) - 参考②[Windows10でファイルシステムエラーが出る原因と修復方法](https://recoverit.wondershare.jp/windows-error/fix-file-system-error-in-windows-10.html#:~:text=%E3%81%BE%E3%81%A8%E3%82%81%E3%81%BE%E3%81%97%E3%81%9F%E3%80%82-,%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0%E3%82%A8%E3%83%A9%E3%83%BC%E3%81%AE%E7%A8%AE%E9%A1%9E,-%E3%82%A8%E3%83%A9%E3%83%BC%E3%81%AE%E5%8E%9F%E5%9B%A0) ::: :::danger 🚨ここが重要 `df`, `du`コマンドの各オプションの使い方、`fsck`, `e2fsck`コマンドの動作について”理解”すべし ::: ### 5.2.3 ファイルシステムの管理 #### `tune2fs`コマンド ext2/3/4ファイルシステムのパラメータを設定する。 対象のファイルシステムはアンマウント(or読み取り専用でマウント) ### 5.2.4 XFS SGI社が自社のUNIXであるIRIX用に開発した、堅固で高速なジャーナリングファイルシステム。 #### ジャーナリングファイルシステム ファイルシステムの操作をジャーナル(ログ)に記録する仕組みを持ったファイルシステム。 - ファイルシステムの整合性チェックが速い →障害発生時のシステム復旧時間を短縮できる - RHEL7やCentOS7で標準 - OSSなので他のディストリビューションでも使える - 最大ファイルシステムサイズが8EB XFSファイルシステムの主な操作コマンド | コマンド | 説明 | | --- | --- | | mkfs.xfs | 新規作成 | | xfs_info | 情報を表示 | | xfs_db | デバッグ(対話形式でコマンド実行できる) | | xfs_check | チェック | | xfs_admin | パラメータ変更 | | xfs_fsr | デフラグ(パソコン内部のストレージを最適化する処理のこと。データの保存・削除を繰り返し行うことで発生するストレージの断片化を解消し、読み書き速度を向上する操作「デフラグメンテーション」) | | xfs_repair | 修復 | :::danger 🚨ここが重要 XFSの主なコマンド操作を覚えるべし ::: :::success 【共有】xfsはinodeを追加できるってさ [Qiita - xfs で inode(iノード)が足りなくなったときの対応](https://qiita.com/ynott/items/de898e63fcdb44b8ca7d#4-xfs-%E3%81%AE-inode-%E3%82%92%E6%8B%A1%E5%BC%B5%E3%81%99%E3%82%8B) ::: ## 5.3 ファイルシステムのマウントとアンマウント ### 5.3.1 マウントの仕組み #### `マウント` 複数のファイルシステムを組み合わせ、一つのファイルシステムとして扱えるようにすること。 リムーバブルメディアやリモートファイルシステムにも使われる。 #### `マウントポイント` マウントしたファイルシステムが結合されるディレクトリ。 <img src="https://tech.pjin.jp/wp-content/uploads/2022/03/b88786aa957a43c5ef78187487298d04.png" alt="mount" width="600px"> 画像出典:https://tech.pjin.jp/ ### 5.3.2 /etc/fstab ファイル ファイルシステムの情報を記述するファイル。 マウントの際はこのファイルが参照される。 →マウントする頻度の高いファイルシステムを記述しておく また、記述したファイルシステムは、Linuxシステム起動時に行われる整合性チェックの対象になる([fsckコマンド](#fsckコマンド)で先述)。 (再掲) ```bash ubuntu@lts:~$ cat /etc/fstab LABEL=cloudimg-rootfs / ext4 discard,errors=remount-ro 0 1 LABEL=UEFI /boot/efi vfat umask=0077 0 1 ``` - 書式:`<①デバイス識別子> <②マウントポイント> <③ファイルシステムの種類> <④マウントオプション> <⑤dumpフラグ> <⑥ブート時にfsckがチェックする順序>` - ①:デバイスファイル名 or ラベル or UUID - ④:複数のオプションは「,」で繋げる - ⑤:1にするとdumpコマンドのバックアップ対象になる - ⑥: - 0:チェックなし - 1,2...:値の順でチェックする - ルートファイルシステムは1にすべし :::info ※skip)UUIDとそのメリット UUID(Universally Unique Identifier) - デバイスに一意に付けられるID - `blkid`コマンドで、デバイスファイルとUUIDの対応を確認できる - UUIDを使うメリットは、下記エラーを防げること - システムにデバイスを追加すると、システム起動時の認識順序が変わることがあり、同じデバイスに割り当てられるデバイスファイル名が異なってしまうことがある - →結果、システム起動時やデバイスへのアクセス時にエラーが発生する ::: :::danger 🚨ここが重要 `/etc/fstab`の”正確な書式”、各”項目の意味”を理解すべし ::: ### 5.3.3 マウントとアンマウント #### `mount`コマンド 現在のマウント状況の表示、ファイルシステムのマウント処理を行う。 引数を省略すると、`/etc/fstab`ファイルの記述が参照される。 - ex. `# mount -t ext4 /dev/sdb3 /data` - `/etc/fstab`に記述がある場合は、`# mount /data`でOK #### `unmount`コマンド ファイルシステムのアンマウントをする。 :::warning ⚠️注意:マウントポイント以下のディレクトリが使用中の場合、アンマウントできない →ディレクトリに対し、読み書きを行っているプロセスを終了すべし →関連しそうなアプリを終了させよう →迷ったらプロセスを特定しよう(`lsof`コマンドでできるかしら) - [【 lsof 】コマンド――オープンしているファイルを一覧表示する](https://atmarkit.itmedia.co.jp/ait/articles/1904/18/news033.html) - [lsofコマンド入門](https://qiita.com/hypermkt/items/905139168b0bc5c28ef2) ::: :::danger 🚨ここが重要 コマンドの使い方に”熟達”すべし また、`/etc/fstab`ファイル、`/etc/mtab`ファイルとの関係も理解するべし ::: ## 5.4 ファイルの配置と検索 ### 5.4.1 FHS(Filesystem Hierarchy Standard) - Linuxにおけるファイルシステム内のレイアウトの標準化規格 - ルートファイルシステムは、Linuxのディレクトリ階層の中で最上位に位置し、下記ディレクトリを含む必要がある - これ参考になる:[hier - ファイルシステムの説明](https://linuxjm.osdn.jp/html/LDP_man-pages/man7/hier.7.html) ルートファイルシステムが持つ必要があるディレクトリたち | ディレクトリ | 内容 | | --- | --- | | /bin | 一般ユーザでも実行可能な、基本的なコマンド(の実行ファイル)の置き場 | | /sbin | rootユーザのみが実行可能なシステム管理に必須のコマンドの置き場 | | /etc | システムやアプリケーションの設定情報、スクリプトファイルなどの置き場 | | /dev | デバイスファイルの置き場 | | /lib | 共有ライブラリやカーネルモジュールの置き場で、/binや/sbinにあるコマンドが必要とするライブラリが配置される | :::danger 🚨ここが重要 - 代表的なディレクトリの役割を覚えるべし - /binと/sbinディレクトリ間、/usr/binと/usr/sbinディレクトリ間の違いは”要注意” - ルートファイルシステムに必要なディレクトリ、FHSでオプション扱いになっているディレクトリを覚えるべし(教科書に書いてるやつ全部じゃんか💦) ::: ### 5.4.2 ファイルの検索 Linuxには複数のファイル検索方法がある→検索の用途に応じて選択しよう👍 #### `find`コマンド - `find <検索ディレクトリ> <検索式>` - 実行ユーザが検索ディレクトリに対するアクセス権限を持っている必要がある - ファイル名に加えアクセス権やファイルサイズ、更新日時などを併用して検索できたり、メタキャラクタが使えたり、検索後にアクションを起こすなど、色々できる :::danger 🚨ここが重要 findコマンドの使い方に”熟達”すべし ::: #### `locate`コマンド - あらかじめ作成されたデータベースに基づき、指定されたパターンに一致するファイルを検索する - findより速い - (Ubuntu22.04LTSには入ってなかった。updatedbも。) #### `updatedb`コマンド - locateコマンドで参照するデータベースを更新する - 多くのディストリビューションで、cronを用いて定期実行されるようになっている - `/etc/updatedb.conf`でコマンドの動作の設定をしている #### `which`コマンド - コマンドを探して絶対パスを表示する - 書式:`which <コマンド名>` - 実行ユーザの環境変数PATHに基づいて検索を行うため、検索結果がヒットしない場合もある #### `whereis`コマンド - 指定したコマンドのバイナリファイル、ソースコード、マニュアルファイルが置かれている場所(絶対パス)を検索する - 書式:`whereis <オプション> <コマンド名>` #### `type`コマンド - 指定したコマンドが、通常の実行ファイルか、シェルノ組み込みコマンドか、エイリアスか、を表示する - 書式:`type <コマンド名>` :::success type実行例 ```bash ubuntu@lts:~$ type cat cat is hashed (/usr/bin/cat) ubuntu@lts:~$ type echo echo is a shell builtin ubuntu@lts:~$ type vi vi is /usr/bin/vi ubuntu@lts:~$ type vim vim is /usr/bin/vim ubuntu@lts:~$ type for for is a shell keyword ubuntu@lts:~$ type ls ls is aliased to `ls --color=auto' ``` ::: :::success xxx is hased??? シェルのhash tableにxxxの実行ファイルのパスを記憶している、という意味らしい。 - ビルトインでないコマンドを実行する場合、環境変数PATHから該当の実行ファイルを探すが、頻繁に使うコマンドは「ハッシュテーブル」に記憶することで高速化を図る ハッシュテーブルのデータの保存先は、わかんないや…💦 ```bash ubuntu@lts:~$ hash hits command 1 /usr/sbin/blkid 4 /usr/bin/mount 3 /usr/bin/find 4 /usr/bin/ls 6 /usr/bin/clear 4 /usr/bin/cat 2 /usr/bin/lsof 3 /usr/bin/sudo ``` ::: :::danger 🚨ここが重要 - locateはfindより速い - whichはパスの通ったコマンドのみ検索できる :::

    Import from clipboard

    Paste your markdown or webpage here...

    Advanced permission required

    Your current role can only read. Ask the system administrator to acquire write and comment permission.

    This team is disabled

    Sorry, this team is disabled. You can't edit this note.

    This note is locked

    Sorry, only owner can edit this note.

    Reach the limit

    Sorry, you've reached the max length this note can be.
    Please reduce the content or divide it to more notes, thank you!

    Import from Gist

    Import from Snippet

    or

    Export to Snippet

    Are you sure?

    Do you really want to delete this note?
    All users will lose their connection.

    Create a note from template

    Create a note from template

    Oops...
    This template has been removed or transferred.
    Upgrade
    All
    • All
    • Team
    No template.

    Create a template

    Upgrade

    Delete template

    Do you really want to delete this template?
    Turn this template into a regular note and keep its content, versions, and comments.

    This page need refresh

    You have an incompatible client version.
    Refresh to update.
    New version available!
    See releases notes here
    Refresh to enjoy new features.
    Your user state has changed.
    Refresh to load new user state.

    Sign in

    Forgot password

    or

    By clicking below, you agree to our terms of service.

    Sign in via Facebook Sign in via Twitter Sign in via GitHub Sign in via Dropbox Sign in with Wallet
    Wallet ( )
    Connect another wallet

    New to HackMD? Sign up

    Help

    • English
    • 中文
    • Français
    • Deutsch
    • 日本語
    • Español
    • Català
    • Ελληνικά
    • Português
    • italiano
    • Türkçe
    • Русский
    • Nederlands
    • hrvatski jezik
    • język polski
    • Українська
    • हिन्दी
    • svenska
    • Esperanto
    • dansk

    Documents

    Help & Tutorial

    How to use Book mode

    Slide Example

    API Docs

    Edit in VSCode

    Install browser extension

    Contacts

    Feedback

    Discord

    Send us email

    Resources

    Releases

    Pricing

    Blog

    Policy

    Terms

    Privacy

    Cheatsheet

    Syntax Example Reference
    # Header Header 基本排版
    - Unordered List
    • Unordered List
    1. Ordered List
    1. Ordered List
    - [ ] Todo List
    • Todo List
    > Blockquote
    Blockquote
    **Bold font** Bold font
    *Italics font* Italics font
    ~~Strikethrough~~ Strikethrough
    19^th^ 19th
    H~2~O H2O
    ++Inserted text++ Inserted text
    ==Marked text== Marked text
    [link text](https:// "title") Link
    ![image alt](https:// "title") Image
    `Code` Code 在筆記中貼入程式碼
    ```javascript
    var i = 0;
    ```
    var i = 0;
    :smile: :smile: Emoji list
    {%youtube youtube_id %} Externals
    $L^aT_eX$ LaTeX
    :::info
    This is a alert area.
    :::

    This is a alert area.

    Versions and GitHub Sync
    Get Full History Access

    • Edit version name
    • Delete

    revision author avatar     named on  

    More Less

    Note content is identical to the latest version.
    Compare
      Choose a version
      No search result
      Version not found
    Sign in to link this note to GitHub
    Learn more
    This note is not linked with GitHub
     

    Feedback

    Submission failed, please try again

    Thanks for your support.

    On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?

    Please give us some advice and help us improve HackMD.

     

    Thanks for your feedback

    Remove version name

    Do you want to remove this version name and description?

    Transfer ownership

    Transfer to
      Warning: is a public team. If you transfer note to this team, everyone on the web can find and read this note.

        Link with GitHub

        Please authorize HackMD on GitHub
        • Please sign in to GitHub and install the HackMD app on your GitHub repo.
        • HackMD links with GitHub through a GitHub App. You can choose which repo to install our App.
        Learn more  Sign in to GitHub

        Push the note to GitHub Push to GitHub Pull a file from GitHub

          Authorize again
         

        Choose which file to push to

        Select repo
        Refresh Authorize more repos
        Select branch
        Select file
        Select branch
        Choose version(s) to push
        • Save a new version and push
        • Choose from existing versions
        Include title and tags
        Available push count

        Pull from GitHub

         
        File from GitHub
        File from HackMD

        GitHub Link Settings

        File linked

        Linked by
        File path
        Last synced branch
        Available push count

        Danger Zone

        Unlink
        You will no longer receive notification when GitHub file changes after unlink.

        Syncing

        Push failed

        Push successfully