#前提
Linuxについて学んだことを書いていきます。
#Linuxのブートプロセスとsystemd
1、電源投入
2、ファームウェア(BIOS/UEFI)動作
- ブートローダを呼び出す
3、ブートローダ - kernelとRAMディスク
4、カーネルを起動 - メモリ初期化やハードウェア認識
5、systemd(init)でサービス起動
6、ログインプロンプト表示
##initとsystemd
・サービスを起動する仕組み
- init: SysVinit(System File Init)従来
- systemd: 現在のLinuxで採用
##systemdのデーモン
・デーモン(バックグランドで常時起動しているプロセス)
- systemd(メイン)
- systemd-jouranl(ジャーナル管理プロセス、ログ管理)
- systemd-logind(ログイン処理)
- systemd-udevd(デバイス動的検知)
##systemdとUnit
・Unit(処理単位)
- systemctlコマンドで制御
- タイプ
・service(各種サービス起動)httpd, sshdなど
・device(デバイス)
・mount(ファイルシステム)/etc/fstab
・swap(スワップ領域の有効化。ディスクをメモリに)
・target(複数Unitをグループ化)
##systemctlコマンド
・start、stop、restart
・status
・is-active
・enable、disable(自動起動)
・list-units
・list-unit-files(unit-fileの一覧・ステータスなど)
・list-dependancies
##サービスの有効化・無効化
【systemdの起動順序】
・default.targetが最初に呼ばれる。以下と関連づける
・ランベル(init)とターゲット(systemd)
0、poweroff.target
1、rescure.target(レスキューモード、シングルユーザモード)
2〜4、multi-user.target(マルチユーザモード)
5、graphical.target(GUIモード)以下のUnitも呼ばれる
・multi-user.target
basic.target
6、reboot.target(再起動)
##isolateモード変更
$ systemctl isolate rescue.target
##OSのシャットダウン・再起動
shutdown -h +10 "this host will shutdown in 10 minutes"
-オプション
・h(halt) 停止
-r(reboot) 再起動
-k(test) 停止せずにテストを行う
・-c(cancel) カウントダウン待ちのシャットダウンを実施
-f(no fsck) 再起動時にファイルのチェックを行わない
-F(fsck) 再起動時にファイルのチェック
・15分後にシャットダウンするコマンドを実行し、キャンセル
-h (halt・停止)+ 分 "メッセージ"
$ su -
# shutdown in 15 "this host will shutdown in 15 minutes!!"
# shutdown -c
##シャットダウンコマンドとwallコマンド
・類似コマンド
停止
・halt, poweroff, init 0
・systemctl poweroff target
再起動
・reboot, shutdown reboot, init6
・systemctl reboot.target
通知
・wall(停止はせず一斉通知)
# wall "this host will stop 20:00 p.m."
##psコマンドでプロセス一覧を表示
・プロセスの生成と消滅まで
- コマンドを実行する
- ファイルをメモリに読み込む(プロセスの生成)
- CPUが処理を実行する
- メモリ上から消滅(プロセスの終了)
・プロセスを確認するpsコマンド
- PID:プロセスID
psコマンドのオプション
・BSDフォーマット
- a(all), f(親子関係), l(詳細), x(端末無)
- pstreeでfは代用可能
・Unixフォーマット
- -e(すべて), -f(詳細), -l(詳細)
※BSDフォーマットが使われることが多い
プロセス管理関連コマンド
・pgrep(検索)
・top(3秒ごとの状況)
・uptime(稼働時間)
・free(free memory)
##プロセスの停止
・kill オプション PID/ %job num.
- 1 (HUP)hang up
- 2 (INT)interrupt
- 9 (KILL)kill/強制終了
- 15 (TERM)terminate/終了
- 20 (TSTP)suspend(Ctrl+D)
・killall プロセス名
・pkill プロセス名
##デスクトップ環境の利用
##統合デスクトップ環境
##ファイル・ディレクトリの所有者
r = 4
w = 2
x = 1
rwxr-xr-x
(4+2+1)(4+0+1)(4+0+1)
= 755
所有者・グループ・権限の変更
・chown
- change owner
・chgrp
- change group
・chmod
- change mode
##chmodコマンドで読み書き権限
# chmod u-r hello.txt
# chmod u+r hello.txt
##ファイルのアーカイブと圧縮・展開
・tarコマンd(tape archive)
- オプション
・c(create)
・x(展開)
・t(情報表示)
・v(verbose)
・f(filename)
・z(gunzipで圧縮)
- cvzf(作成)、xvzf/xzfをよく利用
・cpio、ddコマンド
##シェルの機能
・シェルの役割
- ユーザ入力を受付、カーネルに命令
・シェルの種類の確認
echo $SHELL
env | grep SHELL
##シェル変数・環境変数
・LANGを確認
echo $LANG
・PATH変数
PATH=$PATH:追加したいPATH
PATH=$PATH:/home/h/temp
・シェル変数を環境変数に反映
シェル変数は子プロセスから参照できない
環境変数は別の子プロセスから参照できる
・say_hello
- #!/bin/bash
- echo Message
- echo $MSG
・MSG=”Hello Linux!”
・export MSG
##manコマンド
・man[option][section]keyword
- -a(all)
- -f(完全一致)fully matched
- -k(部分一致)keyword match
##ファイルの参照
・cat: concatenate
- -n:行番号表示
・nlコマンドで代用可
- ファイルの内容を連結して出力
・head/tail
- 行数、 -n 行数
- -f(継続的表示)
##リダイレクトとパイプ
・リダイレクト
- 書き込みモード
・コマンド > ファイル(上書き)
・コマンド >> ファイル(append)
- オプション
・コマンド2 > ファイル
・コマンド > ファイル2 > &1
・コマンド $ ファイル
・コマンド << EOF > ファイル
##pipeとteeコマンド
・標準出力にもファイルにも出力する
・コマンド | tee ファイル名
- パイプ(|)で最初のコマンドの実行結果をteeコマンドに投入
- 標準出力にもファイルにも出力
##xargsコマンド
・コマンド実行結果を次のコマンドの引数に
#viエディター
・Linux/Unixに標準搭載
- システム管理業務やサーバー設定に必須
・2種類のモード
- コマンドモード <=> 入力モード
- コマンドモードは検索、削除、コピー、ペースト
- 入力モード(i,a,oで切替)テキスト入力
##カーソルの移動
・h,j,k,l
- 左、下、上、右
・移動
- w(wordの先頭), b(前の単語)
- e(wordの末尾、end)
- 0(行の先頭)、$(行末)
・検索
- /kw, n(後方検索)
- ?kw, N(前方検索)
##テキスト操作
・cw(単語置換)、c$(行末まで)
・y(copy)、yy(行コピー)
・cw(1文字削除)
・d(削除)、dd(行)、dw(単語)、d$(行末)
・p(paste)
・u(undo)
・r ファイル名(ファイル内容を挿入)
#セキュリティ
##SUIDとSGID
・特殊な3つのパーミッション
#ネットワーク基礎
##TCP/IPの仕組み
・通信プロトコル(規約の1つ)
- 通信手順、データフォーマットなどの技術標準
・IEEE、IETFなどで提案・標準化 - パケット(データ分割、ヘッダ付加)単位で送受信
##ヘッダの各層(Layer)
・ヘッダの中にさらに4つの情報を格納
- ネットワークインターフェース層
・Ethernet, PPP,,, - インターネット層
・IP, ICMP(*ping), ARP(MACアドレス) - トランスポート層
・TCP, UDP(*streaming) - アプリケーション層
・FTP, SSH, Telnet, DNS, HTTP, IMAP4, POP3,,,
##TCPとUDP
・TCPはデータの到着を確認
- 不足すればパケット再送
・UDPは確認ぜず、一方的にパケット送信
- ビデオ配信などリアルタイム性が高い用途
##ポード番号
・ホストはIPアドレスで識別
・通信ポートを使い分けて通信(/etc/services)
- well-known port
- 20/21(FTP)
- 22(SSH)
- 25(SMTP)
- 53(DNS)
- 80/443(HTTP/HTTPS)
- 123(NTP)
- 143(IMAP)
- 389(LDAP)