LoginSignup
12
20

More than 5 years have passed since last update.

Linuxの勉強

Last updated at Posted at 2017-07-19

この投稿について

まとめノートをどこからでも見れるようにするため、途中ですが投稿します。
投稿後に、ちょっとずつよくしていきます。
リンクは、まだリンク先を作っていないものも含まれています。
※勉強中ノートなので、間違った情報流しているかもしれません。

絵で見てわかるLinux OSアーキテクチャ

alt

PCを組み立てるときに、cpuやメモリなどを配置しますが、これを読み込んだり連携するのがカーネル。

図を見ると、

  • CPUと連携しつつ、Process managementがあり、
  • RAMと連携しつつ、Memory management,
  • HDD,SSD等と連携しつつ、File system,
  • 各種端末とDevice drivers,
  • Network adopterとNetwork というように、ハードと対応するコンポーネントがカーネルに用意されており、 それらをユーザスペース側のアプリケーションからシステムコールで呼び出してハードを使い、これらを連携して仕事を行っているようです。 (ちなみに、 shellはユーザスペース側にいる ようです)

File system

alt

alt

Windows脳のままLinuxを見るとファイルシステムがわかりませんでしたが、これらの図を見て、なるほどと思いました。
Windowsだとパーティション毎にドライブを割り当てるけれど、
Linuxはルートファイルシステムを持ち、ルートファイルシステムが各パーティションのファイルシステムにマウントする形で連携して1つのファイルシステムとして使えるということだと理解しました。

ルートファイルシステム

  • ルートディレクトリ(/)と同一のパーティションに存在するファイルシステム
  • 他のすべてのファイルシステムにマウントしている(自分がしていない)ファイルシステム
  • ブートで使われるファイルシステム

    • /bin システムに必要なコマンド、プログラムが含まれている
    • /sbin システムに必要なコマンド、プログラムが含まれている
    • /etc 各種設定
    • /lib ライブラリ
    • /dev デバイスファイル

パーティション

1つのディスクを論理的に分けた区画。

BIOSベース

  • 基本パーティション 1つのディスクに4つまで(MBR方式)。128まで(GPT) /dev/sda1〜/dev/sda4
  • 拡張パーティション 内部に論理パーティションをもつ基本パーティション。基本パーティションのうち1つだけ選択できる。
  • 論理パーティション /dev5〜.

UEFIベース

  • EFIシステムパーティション 他のパーティションの管理など
  • 基本パーティション1
  • 基本パーティション2
  • 基本パーティション..

ファイルシステムの種類

ext系

多くのディストリビューションで採用されている。

  • ext2: Linux標準
  • ext3: ext2 + ジャーナリング機能
  • ext4: ext3を機能拡張

XFS系

RHL7で標準となっているジャーナリングファイルシステム。

FHS

ファイルとiノードとディレクトリ

ファイルシステム周りの操作

パーティションを管理する
・fdisk
・gdisk
・parted

ファイルシステムを作成する
・mkfs
・mke2fs(etx2,etx3,etx4)
・mkswap(スワップ領域作成)

ディスクの利用状況確認
・df <-- ディスク/iノードの利用状況確認

・du <-- ディレクトリの容量確認

ファイルシステムをチェックする <-- unmount / 読み取り専用にしておく
・fsck
・e2fsck

ファイルシステムの管理
・tune2fs
・dumpe2fs

XFSファイルシステムを管理する
・mkfs.xfs
・xfs_info
・xfs_db
・xfs_check
・xfs_admin
・xfs_fsr

ファイルシステムをマウント・アンマウントする
・/etc/fstab
・/etc/mtab
・mount
・unmount

ファイルシステムの利用容量制限をかける(quota)
・quotacheck
・quotaon / quotaoff
・edquota
・repquota


システムとコマンド

cpu情報を確認する

  • cat /proc/cpuinfo

メモリの利用状況を調べる

  • free

システムの稼働時間を調べる

  • uptime

システムのアーキテクチャやOSを調べる

  • uname

デバイス/usb

  • lspci

  • lsusb

  • lsmod

    • デバイスドライバのロード
    • 必要な情報をカーネルに読み込む

------ ブート ----------------------------

ブートローダ(ブートマネージャ) = GRUB
GRUB Legacy / GRUB2
MBR
SysVinit
systemd
ランレベル

ブートローダGRUBをインストールする
・grub-install /dev/sda

ブートローダの設定をする
・vi /boot/grub/menu.lst
・vi /boot/grub/grub.cfg
・grub-mkconfig

ブートオプションの指定
・起動時にEを押す
・オプションを選ぶ

起動時のイベントを確認する
・dmesg
・cat /var/log/messsages
・cat /var/log/dmesg
・cat /var/log/boot.log

シャットダウンと再起動
・shutdown

ランレベルの確認と変更
・runlevel
・init
・wall (他のユーザへ警告メッセージ)
・ls /etc/rc3.d

サービスの管理
・systemctl

--- 共有ライブラリ ---------

共有ライブラリ ( /lib , /usr/lib )
/etc/ld.so.conf, etc/ld.so.cache, 環境変数LD_LIBRARY_PATH

必要な共有ライブラリの確認
・ldd コマンド (ldd /bin/cat)

共有ライブラリの変更を反映する
・ldconfig

--- パッケージ管理 ----------
----- debian --------

パッケージ名の命名規則
・dpkg
・apt-get
・apt-cache
・aptitude
----- RPM -----------
パッケージ名の命名規則
・rpm
・yum
・yumdownloader

-----ファイル / ディレクトリ / リンク -------

ファイル / ディレクトリ / iファイル
シンボリックリンク / ハードリンク
メタキャラ(*,?,[],{})

ファイルを探す
・find
・locate
・updatedb

ファイルの圧縮、回答
・gzip
・gunzip
・bzip2
・bunzip2
・xz

アーカイブを作成する
・tar

アーカイブファイルにコピーしたり、そこからファイルをコピーする
・cpio

ファイルをコピーする
・cp
・dd

リンクを作成する
・ln

リンクをコピーする
・cp -d

その他
・ls
・cp
・mv
・mkdir
・rmdir
・touch
・file

-----テキスト操作----

正規表現

・cat
・nl
・od
・head
・tail
・cut
・join
・paste
・tr
・sort
・split
・uniq
・pr
・fmt
・expand
・unexpand
・wc
・xargs
・grep <-- 拡張正規表現が使える(-E)
・egrep <-- 拡張正規表現が使える
・sed <-- 非破壊的 (d,s,yコマンド)

-------ファイルやディレクトリの権限まわり-------------

権限のアーキテクチャ

権限を確認する
・ls -l / ls -ld

権限を変更する
・chmod (SUID, SGID, StickeyBit)

デフォルトマスクを確認する
・umask

ファイルの所有者を変更する
・chown

グループを変更する
・chgrp

----- プロセス -----------

プロセス

実行中のプロセスを確認する
・ps
・pgrep
・pstree (ps -f)
・top

プロセスの終了
・kill
・killall
・pkill

プロセスの実行優先度を確認する
・ps -l (PRI列)

コマンド実行時に優先度を指定する
・nice -n -10 (コマンド)

実行中プロセスの優先度変更
・renice

----- シェル ------------------------

シェル / カーネル
環境変数(主なものだけでよい)
内部コマンド / 外部コマンド (シェルに組み込み / 独立したPG)
コマンドの実行方法
引用符 '' ""(変数展開) ``(コマンド展開)
whatisデータベース
標準入出力

処理を中止 / 一時停止
・Ctrl + C / Ctrl + Z

画面をロック / ロック解除
・Ctrl + S / Ctrl + Q

端末内で仮想端末を作成する
・screen

変数を定義して、確認する
・key=value
・echo $key

変数を削除する
・unset key

環境変数を一覧表示する
・env
・printenv
・set <-- 環境変数とシェル変数を両方表示できる

外部コマンドを実行できるように環境変数PATHに通す
PATH=$PATH:/opt/bin (/opt/bin を通した)

コマンドの履歴を確認する
・history
・↑ / Ctrl + p
・↓ / Ctrl + n
・!文字列
・!?文字列
・!!
・!履歴番号

コマンドの実行方法
・;
・&&
・||
・!履歴番号
・(;)
・{;}

ページャーでみる
・less <-- 操作方法

コマンドについて調べる
・which
・whereis
・type
・man <-- manページ見出し、セクション
・whatis (man -f) <-- 完全一致
・apropos (man -k) <-- 部分一致

キーワード検索用データベースを作成する
・makewhatis

実行結果を標準出力とファイルに出力する
・tee

ヒアドキュメントで入力する
・cat > sample.txt <<EOF

----- ジョブ in シェル --------------

ジョブ
バックグランドで実行する
・&
・nohup

実行中のジョブを確認する
・jobs

ジョブのモードを変更する
・Ctrl + Z <-- 一時停止
・bg <-- バックグランドへ
・fg <-- フォアグラウンドへ

------ vi エディタ -----
viの使い方を覚える
・vimtour

12
20
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
20