1. Linuxとは?
- UNIXという初期に生まれたOSに対して、無料(オープンソース)で提供されたOSの1つ
- Linuxでは、ソフトをインストールする際に『パッケージ管理機能』を使う
2. カーネル・シェル(bash, tcsh)
(1) Linuxの構造
- 安全のため、カーネル(核)はシェルで包まれている
※ カーネル:OSの核(指示)・・・システムコール、デバイスドライバ、プロセス管理
※ シェル:命令をカーネルに伝える
(2) シェルの種類
sh: 基本的、速いが機能が少ない
bash: 多くのLinuxで標準搭載
tcsh: BSD系OSでは標準だが、シャルスクリプトが苦手
(3)環境設定ファイル(bash)
『アクセス』⇨『/etc/profile』システム(ユーザー)共通の設定ファイル ⇨
『.bash_profile』ユーザー固有の設定ファイル(bashrcを呼ぶ) ⇨
『.bashrc』ユーザー固有の設定ファイル(簡単な設定はbashrcに書くのがセオリー) ⇨
『bash終了』
3. ディレクトリ構造
(1) Linuxのディレクトリ構造
ディレクトリ(Linux) = フォルダ(Windows)
/
├─ home
├─ a(user):カレントディレクトリ(current directory)
├─ .base_logout
├─ .bashrc
├─ .motd_shown
(2) ディレクトリ操作のコマンド
pwd: カレントディレクトリへのパス
ls: カレントディレクトリ下のファイル・ディレクトリの表示
cd: カレントディレクトリの移動
(3) ディレクトリ構造
├─/bin :OSが正常に動作するための実行ファイル
├─/boot :システムの起動に必要なファイル
├─/dev :ハードウェア機器を表すファイル
├─/etc :設定ファイル
├─/home :ユーザーのホームディレクトリ
├─/lib :OSに必要なライブラリファイル
├─/media :外部の記憶媒体をマウント(自動)
├─/mnt :外部の記憶媒体をマウント(手動)
├─/opt :追加のアプリケーションがインストール
├─/proc :OSのシステムをコントロール
├─/root :rootアカウントのホームディレクトリ
├─/sbin :ルートユーザーのみ実行できるプログラム
├─/sys :OSの現在の状況に関する情報
├─/usr :全ユーザーが共通して利用するプログラムのデータ
├─/var :システム運用中に生成、後から削除されるデータ
4. 基本コマンド
(1) ディレクトリ操作のコマンド
pwd: カレントディレクトリへのパス
ls: カレントディレクトリ下のファイル・ディレクトリの表示
ls-l: ファイル権限の表示
ls-a: 隠しファイルも表示
cd: カレントディレクトリの移動
cd..: 1つ上のディレクトリに移動
cd/: 1番上のディレクトリに移動
cd〜: ホームディレクトリに移動
(2) ファイル操作のコマンド
touch: ファイルの作成
vim: ファイルの編集
Esc: ノーマルモード
I: 編集モード
: コマンドモード wq: 上書き終了 q!: 強制終了
cp: ファイルのコピー
mv: ファイルの移動(名前の変更可能)
rm: ファイルの削除
(3)パイプライン
2つ以上のコマンドを連結できる(左から右に結果を渡す)
- lsの出力をgrepに渡す
- printenv(環境変数)の出力をgrepに渡し、tailに渡す
フィルタ
head: 先頭
tail: 末尾
grep: 文字列を含む行の検索
(4)リダイレクト
出力結果を書き込める
lsの出力をtext3.txtに書き込む
ls > text3.txt
cat text3.txt
lsの出力をtext3.txtに末尾に書き込む
ls >> text3.txt
cat text3.txt
5. シェルスクリプト(.shファイル)
(1)シェルスクリプトの基本
コマンドをまとめて一括で実行するために、.shファイルを用意する
①test.shというファイルを作成する
vim test.sh
②ファイル権限を実行可能(+X)にする
chomd +X test.sh
③実行結果
./test.sh
# : コメントアウト
echo: 画面表示
(2)変数とargs
① test.shというファイルを作成する
vim test.sh
②実行結果
./test.sh 1 10 100
(3)caseとfor
条件分岐(case)と繰り返し(for)も使用可能
① test.shというファイルを作成する
vim test.sh
②実行結果
./test.sh
6.パーミッションと管理者権限(chmod, sudo)
(1)パーミッション(権限)
ファイルには9つのアクセス情報が含まれる
{ r: 読み込み w: 書き込み x: 実行}
×
{ 管理者{root} グループ ユーザー(本人)}
ls -l
-rw-r--r--r 1
(パーミッション)
(2)chmod: パーミッションを変更(グループごとに2進数で設定)
chmod 755 test.txt
ls -l
(3) 管理者権限(super user)
多くの作業には管理者権限が必要になる
/
├─ home
├─ user1:ユーザーのアクセス範囲
{ 起動/停止 ユーザー追加 ソフトウエアインストール }
sudo: 一時的に管理者権限で実行する
sudo apt-get install xrdp
su -: 管理者ユーザーでログインする
sudo su -
7.リモート接続(SSH, Xサーバ)
- なぜリナックスを使うのか? ⇨ 軽い・安い・安定 → サーバに最適
- サーバ管理は遠隔でやりたい ⇨『SHH』『Xserver』が遠隔操作に必要
(1)リモート操作
- SHH(Secure Shell):安全に遠隔操作ができる
- Xserver:GUIで操作できるシステム
- FTP:リモートでファイル操作ができる
8.ビルド(gccコンパイル・リンク)
(1)ビルドとコンパイル
- プログラミング言語は『ビルド』して初めて使えるようになる
コンパイル ⇨ リンク
- Linuxではコンパイル用コマンドを自分で作成する必要がある
(2)GCC(C言語コンパイラ)
Linuxでよく使われるvimによる『コンパイル(リンク)⇨ 実行』方法
①GCC(コンパイラ)をインストール
sudo apt-get install gcc
②vimよるファイル編集
vim test.c
③実行ファイルtest.outを作成(コンパイル)
gcc -o text.out test.c
④実行結果
./test.sh
9.プロセス・スレッド・ジョブスケジューラ
プロセスとスレッドの違い
- プロセス: 実行中のプログラム 自分専用のメモリ空間が必要
- スレッド: プロセスの中の実行単位 独立して実行可能
(1)プロセス管理
- ps:現在稼働しているプロセスを表示
ps
- top:リアルタイムで稼働しているプロセスを表示
top
(2)ジョブ
大量の計算を流す場合、ジョブスケジュールで管理する
{プロセス:Linuxから見た処理の単位 ジョブ:シェルから見た処理の単位}
job -l:ジョブを表示
jobs -l
参考サイト
【丁寧に学ぶLinux入門】 ①Linuxとは? ディストリビューション(Ubuntu RedHat CentOS Devian)
【丁寧に学ぶLinux入門】 ③カーネル・シェル(bash, tcsh)
Linuxディレクトリ構造を完全解説!
【丁寧に学ぶLinux入門】 ④ディレクトリ構造
【丁寧に学ぶLinux入門】 ⑤基本コマンド (ディレクトリ表示 ファイル操作 パイプライン リダイレクト)
【丁寧に学ぶLinux入門】 ⑥シェルスクリプト(.shファイル)
【丁寧に学ぶLinux入門】 ⑧リモート接続(SSH, Xサーバ)
【丁寧に学ぶLinux入門】 ⑨ビルド(gccコンパイル・リンク)
【丁寧に学ぶLinux入門】 ⑩プロセス・スレッド・ジョブスケジューラ