1.Linuxとオープンソース
OSとは
OS:ハードウェアとアプリの仲介役(ハードの違いを中和してくれる為、アプリが作成しやすい)
Linuxとは
システムを動かす為の基盤
-
Linuxの特徴
- (UNIXで出来る事は大体出来る、逆も同様)
- 無償
- 自由度高い
Linuxを使って組まれたシステムをLinuxディストリビューションという。
代表例
Red Had系ディストリビューション
Red Hat Linux(現在はRed Hat Enterprise Linux)がベースに開発されたもの
Debian系ディストリビューション
フリーソフトウェアだけを採⽤する無償ディストリビューション(Ubuntu等)
その他ディストリビューション
代表的な例:SlackwareやopenSUSE
オープンソースとは
ソースコード(開発に必要な言語)を公開していて、自由に誰でも開発を進めれるスタイルのこと
2.Linuxの基本操作
ユーザーインターフェースには$\color{red}{\rm CUI}$と$\color{blue}{\rm GUI}$がある。Linuxでは基本$\color{red}{\rm CUI}$を使用
- $\color{red}{\rm CUIとは}$ 文字情報で操作
- $\color{blue}{\rm GUIとは}$ マウスを使用してアイコンやメニュー等で操作 (使用例:x window system)
Linuxの使用はユーザーとパスワードが必須
管理者用の[rootユーザー]とそれ以外の[一般ユーザー]がある
オンラインマニュアルに関して
man : オンラインマニュアル確認(ファイル:/usr/share/man) 終了:q
- マニュアルページのセクション番号(用途)
- ⼀般ユーザのコマンド
- システムコール (カーネルが提供する関数)
- ライブラリー呼び出し (プログラムライブラリーに含まれる関数)
- デバイスファイル
- 設定ファイルの書式
- ゲーム
- その他
- システム管理コマンド
- Linux独⾃のカーネル⽤ドキュメント
コマンド一覧
su - 一般 → rootexit root → 一般
cal カレンダー
whatis セクションの確認
--help 軽く使い方を確認
- shutdown [オプション] 時間
- -r:再起動
- -h:シャットダウン
- -c:シャットダウンをキャンセル
⇒【時間】 now:今 +(数字):何分後 (数字:数字):何時何分
3.ファイルとディレクトリ
【 ファイルとは 】
通常ファイル、ディレクトリ、リンクファイル、特殊ファイル 4つがある。
ファイル名には、「*」「!」「? 」等を含んではいけない
-
ls [オプション] [ファイル名 または ディレクトリ名] ファイル一覧
- -l ファイルやディレクトリの属性や詳細情報などを表⽰
- -a 隠しファイルを含めて表⽰
- -R ディレクトリ内に存在するディレクトリの中⾝も表⽰
ディレクトリ(フォルダ)について
ルートディレクトリ:ディレクトリの頂点
相対カレント、絶対ルート
ユーザーことに「/home/ユーザー名」というホームディレクトリが割り当てられる
【コマンド】
cd [オプション] [移動先ディレクトリ] カレントディレクトリの移動
cat [ファイル名] テキストファイルの内容表示
ハードリンクとシンボリックリンク
iノード ファイルやディレクトリの番号
ハードリンク 1つのiノードに複数のファイル名を設定 ln:作成コマンド
シンボリックリンク 別iノードを設定 ln -s:作成コマンド
イメージ
iノード(部屋 (データ) に入る為のドア)
ハード(1つのドアに複数のドアノブ (ファイル名) を作成)
シンボ(ドアノブが1つしか付けれない新しいドアを作成)
4.ファイル管理
cp [オプション] 元名 新名 ファイルコピー
$\color{blue}{オプション}$
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー-p 属性ごと
-i 上書き確認
-R ディレクトリを配下ごと
-d シンボリックリンクのままコピー
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
$\color{blue}{オプション}$
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー-t 元ファイルを全て移動
-i 上書き確認
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
$\color{blue}{オプション}$
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー-f 削除確認なし
-i 削除確認あり
-r ディレクトリ削除時付与
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
mkdir ディレクトリ作成
-p 同名があれば作成せず、無ければ作成
$\color{red}{※他は大体ファイル操作コマンド同様}$
ファイル・ディレクトリの圧縮と展開
【コマンド一覧】
gzip [オプション] ファイル名 ファイル圧縮
zip [-r] 圧縮ファイル名 ファイル名orディレクトリ名
ファイル圧縮+名前変更
gunzip 圧縮ファイル名 解凍
unzip 圧縮ファイル名 解凍、圧縮ファイルは削除されない
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
アーカイブ作成
tar ()vf アーカイブファイル名 対象ディレクトリ名
() には【c作成 x展開 v詳細 fアーカイブファイル指定 j圧縮(bzip2) J圧縮(xz) z圧縮(gzip)】
拡張⼦「.tgz」は、tarコマンドで作成されたアーカイブファイルをgzip形式で圧縮させたもの
5. ユーザとグループ
UID(ユーザーID)
・⼀般ユーザー 100以上
・システムユーザー 1~99
・rootユーザー 0
sudo コマンド :コマンド作動に一時的にrootの権限が使える
※求められるパスワードは元ユーザーのパスワードを入力
グループ ※ユーザーはグループに所属必須、複数所属OK。
・プライマリグループ、それ以外サブ
===========================================
【コマンド一覧】
groups [ユーザー名] 所属グループ情報
id [ユーザー名] 所属グループ情報
useradd [オプション][ユーザー名] 作成
- passwd [オプション][ユーザー名]
- -d 無効
- -i 日数 有効期限が切れてから使用不可になるまでの日数を設定
- -l アカウントロック
- -u ロック解除
- -w 日数 有効期限が切れる何日前から警告を表示するかを設定
- -x 日数 有効日数を設定
オプション
usermod [オプション] [ユーザー名] ユーザー情報を変更
-c コメント $コメント変更$
-d ホームディレクトリのパス $ホームディレクトリ変更$
-g グループID $主グループ変更$
-G グループID $サブグループ変更 複数指定可能$
-l [新ユーザー名] $ユーザー名変更$
-s シェルのパス $ログインシェル変更$
-aG $グループ追加$
userdel [オプション] [ユーザー名] ユーザーを削除する
-r $ホームディレクトリ毎ユーザーを削除する$
groupadd [オプション][グループ名] グループを作成
-g グループID $指定したグループIDでグループ作成$
groupmod [オプション] [グループ名] グループ情報変更
-g グループID $変更後グループIDを指定$
-n グループ名 $変更後グループ名を指定$
-o グループID $既に存在するグループIDへの変更$
groupdel [グループ名] グループ削除
6.パーミッション
ファイルやディレクトリ
所有者(u)・グループ(g)。その他(o)、この3つに対してアクセス権限を設定
chown [オプション] 所有者名 ファイル名またはディレクトリ名 所有者変更
chgrp 所有グループの変更
-R $指定したディレクトリとその中にあるファイルすべての所有グループ変更$
chown [オプション] グループ名 ファイル名またはディレクトリ名
パーミッション:所有者や所有グループごとのアクセス権
(例)$\color{red}{\rm d}$$\color{blue}{\rm rwx}$$\color{green}{\rm rw-}$$\color{ Orange}{\rm r-x}$
$\color{red}{\rm d}$:ディレクトリ("誰"を表す) $\color{blue}{\rm rwx}$:所有者の権限
$\color{green}{\rm rw-}$:所有グループの権限 $\color{Orange}{\rm r-x}$:その他の権限
権限付与方法
誰: a全て u所有者 gグループ oその他
動作: +追加 ー削除 =設定
権限: w書き込み r読み取り x実行
・もしくは2進数で表現 ※上記の例だと 765
7.テキストファイルの編集
---コマンドモード---
Esc コマンドモード
x1 削除
dd 1行削除
yy 1行コピー
p 貼り付け
o 次の行から入力モード
a カーソルの次の文字から入力モード
gg ファイルの最初へ
G ファイルの最後へ
$ 行の最後へ
^ 行の最初へ
d$ カーソルから行の最後までを削除
d^ カーソルから行の先頭までを削除
dG カーソルからファイルの最後までを削除
dgg カーソルから最後の行まで削除
:set nu 行番号の表示
「行番号」 G 行番号へ移動
: w 保存 (後ろにファイル名を加えるとそのファイルに保存)
: q viコマンド終了
: wq 保存して終了
: q! 保存せず、強制的に終了
8. シェルについて
シェル・・・コマンド実行→結果を表⽰しているプログラム
リダイレクト
コマンドの標準出⼒を端末画⾯ではなく、任意のファイルに切り替える
[ コマンド > ファイル名 ]
ファイルの末尾に追記したい場合は、「>>」
パイプ
コマンドの実⾏結果を別のコマンドで処理できる
[ コマンド | コマンド ]
メタキャラクタ
history コマンド履歴
エイリアス コマンドのあだ名
[alias 【付与名】= "【コマンド】"] あだ名決定
※エイリアス永続化方法(bashの設定ファイルに書き込む)
1⃣vi ~/.bashrc
2⃣ファイル内で、新しいエイリアスを追加
3⃣source ~/.bashrc
unalias [別名] エイリアス解除
ll:$さっき作ったエイリアス解除 $
-a:$全て$
シェル変数 1つのシェル内だけで使える変数
環境変数:設定したシェルと、 シェル上で起動したシェルや実⾏したコマンドでも使える変数
シェルスクリプト:一連のコマンドをまとめた1つのファイル
⇒viにてファイル内で[#!/bin/bash]入力して設定
【コマンド】
printenv $環境変数を表⽰$
set $設定されているシェル変数と環境変数をすべて表⽰$
9.シェルスクリプト
⼀連のコマンド操作を⾃動化
bash シェルスクリプトファイル名 実行
source シェルスクリプトファイル名 シェル変数をシェルスクリプト内で参照できる点
シェルスクリプトにも引数を指定可能
10. ファイルの操作
find パス 検索条件 アクション 通常の検索
find / -name "<ファイル名>" 名前指定 ※ワイルドカードを使用しざっくり検索OK
オプション
-d $ディレクトリのみ$
-f $ファイルのみ$
-size $サイズ指定$
-perm $パーティション指定$
-user $ユーザー指定$
-(a,c,m)(min,time)
組み合わせて a最終アクセス時刻 c最終ステータス m最終変更時刻 min分単位 time日単位
========================================
locate 高速検索
例)locate *.txt
grep[オプション] <検索パターン> <ファイル名> テキストファイルの内容表示
-n $(マッチした行の行番号を表示)$
-i $(大文字小文字区別なし)$
-V $(マッチしなかった行を表示)$
-E $(拡張正規表現)$
メタ文字
. 任意の1文字
\ メタ文字効果打ち消し
[文字] 文字指定 (文字の前に^を入れるとその文字以外をマッチ)
文字 - 文字 例:a-k, a-zA-Z 等
文字$ 指定した文字が行末に来る文字列のみ検索
+ 直前の⽂字の1回以上の繰り返し(拡張表現)
? 直前の⽂字の0回または1回の繰り返し(拡張表現)
^ 行の先頭が○○
11. ソフトウェアとパッケージ
パッケージ ソフトウェア動作の為に必要なファイルをまとめたもの
パッケージ管理システム パッケージの依存関係を管理するシステム
RPMパッケージ、debパッケージなどがある
rpm オプション $\color{red}{\rm RPMパッケージを管理}$
-ivh 指定したパッケージをインストール
-Uvh 指定したパッケージをアップグレード
-e 指定したパッケージをアンインストール
-q 指定したパッケージがインストールされているか確認
-qa インストール済みパッケージを⼀覧表⽰
-qi 指定したパッケージの説明を表⽰
yum サブコマンド $\color{blue}{\rm パッケージの管理}$
update システム全体をアップデート
(パッケージ名を後ろに付けると指定した1つをアップデート)
install インストール
remove アンインストール
list パッケージを⼀覧表⽰(未インストールも含む)
info パッケージ名
search 指定したキーワードでパッケージを検索
12.ファイルシステム
外部記憶装置のデータをファイルとして管理する仕組み
デバイスファイル デバイスを表すファイルのこと(/devディレクトリ以下に配置)
主なデバイスファイル
/dev /sda 等
パーティーションの作成
1台のハードディスク=4つのパーティション(領域)を基本パーティション
基本パーティションの内1つを拡張パーティションに変更可能
fdisk デバイスファイル名 デバイスファイル作成
$\color{red}{\rm ※パーティションだけではその中にファイルを保存出来ない。}$
mkfs [-t ファイルシステム] デバイスファイル名 ファイルシステム作成
マウント
マウント:ディレクトリツリーに他のファイルシステムを接続すること
マウントポイント:デバイスを接続するディレクトリのこと
mount デバイスファイル マウントポイント マウント実⾏
FHS (ファイルシステム階層標準)とは、ディレクトリやファイルの配置の規定
FHSで規定されているディレクトリの配置
bin システムに必須のコマンド
boot 起動関連
dev デバイスファイル
home ホームディレクトリ
lib 共有ライブラリ
root rootのホーム
13.プロセスとジョブ
ps [オプション] プロセス情報確認
a $他のユーザーのプロセスも$
u $ユーザ名$
x $端末から実⾏されたものではないプロセス(サーバプロセス)も$
表示例「PIO TTY TIME CMD PID : ID
19262 ttyl 00: 00: 00 bash TTY : 実⾏した端末名
19325 ttyl 00: 00: 00 ps 」 TIME : 実⾏時間
CMD : 実⾏コマンド
top 実行状況モニタリング
シグナル・・・プロセスへの命令
9 KILL 強制終了 ※使用するのはTERMが有効で無かった時のみ
15 TERM 終了
18 CONT 再開
19 STOP ⼀時停⽌
【シグナルを送信するkillコマンド】
$ kill - [シグID] プロID
$ kill -s [シグID] プロID
(例1)kill 28000 (例2) kill -15 28000 (例3) kill -s TERM 28000
kill シグIDを入力しない場合TERMが命令される
ジョブの管理
$\color{red}{\rm フォアグラウンドジョブ}$と$\color{blue}{バックグラウンドジョブ}$
実行すると終了するまで他のジョブは行えない:$\color{red}{\rm フォアグラウンドジョブ}$での実行状態
コマンドラインの末尾に「&」を付けると$\color{blue}{バックグラウンドジョブ}$で実行可能
jobs 実行中のジョブ確認
fg [%ジョブID ] $\color{red}{\rm フォアグラウンドジョブ}$実行
bg [%ジョブID ] $\color{blue}{バックグラウンドジョブ}$実行
14.ネットワークの利⽤
プロトコル:通信関連のルール
TCP:高信頼性、パケット(分割されたデータ)が届いたかを確認する
IP:32ビットがIPv4、128ビットがIPv6
UDP:TCPのパケット確認を行わない版、その分早い
ICMP:エラーやメッセージなどを伝送するプロトコル
IPアドレス:ネットワーク部()とホスト部がある
サブネットマスク:IPアドレスを2進数で表現したもの
例)$\color{red}{\rm 192.172.}$$\color{blue}{\rm 46.45}$$\color{green}{\rm /16}$
$\color{red}{\rm 192.172.}$がネットワーク部、$\color{blue}{\rm 46.45}$がホスト部、$\color{green}{\rm /16}$がネットワーク部がどこまでかを表す
ネットワークセグメント:同じネットワーク部のIPアドレスは1つのネットワークに属している。
その範囲のこと。
ネットワークアドレス:先頭のIPアドレス
ブロードキャストアドレス:末尾のIPアドレス
クラス:IPアドレスを分類したもの、Aが0~127、Bが128~191、Cが192~223
グローバルIPアドレス:インターネットに直接接続するIPアドレス
プライベートIPアドレス:インターネットに直接接続するわけではないIPアドレス
ポート番号:送信元や送信先のアプリケーションを識別するための番号
25 メール送信
80 HTTP
110 メール受信
443 HTTPS
主な設定ファイル
/etc/hostname ファイルのホスト名設定
/etc/hosts
/etc/resolv.conf
【コマンド】
ifconfig [ネットワークインタフェース名】 ネットワークインターフェース情報
ss [オプション] 開いているポートを表示
-a $すべてのソケット (接続) 情報を表⽰$
-1 $サーバが開いているポートを表⽰$
-t $TCPポートのみ表示$
host ホスト名または IPアドレス 対応するIPアドレスを確認
15.システムの管理
【コマンド】
last 最近ログインしたユーザー
who ログイン中のユーザー
w ログイン中のユーザーと実行中のコマンド、システム情報