LPIC学習　第四章　ファイルとプロセスの管理

####4.1基本的なファイル管理
/から始まる、大元のディレクトリがルートディレクトリー
大体が初期設定やパソコンの立ち上げに必要なディレクトリーです。
デスクトップ常に表記されている分はhome/ユーザー名にある

圧縮を行う3つのコマンド
圧縮効率について
　gzipコマンド　gz 良くな　zcat
   -d 圧縮ファイルを展開
   -c 標準出力
   -r ディレクトリ内のファイルを全て圧縮
　bzipコマンド bz まぁまぁ  bzcat
　tzコマンド tz 高い xzcat
tarコマンド
　アーカイブする。（アーカイブして圧縮もできるtar.gzとかになる）

＊圧縮していても中身をみる方法はある
  zcat
  bzcat
  xzcat
圧縮の流れ
tarコマンドで、複数のファイルを一つにまとめてから（アーカイブしてから）zipコマンドなどで圧縮する。

-c
-x
-t
-f
-z
-j
-J
-v
-u
-r
-M
-delete

cpioコマンド
/tmp/backupとしてバックアップされる
ls|cpio -o > /tmp/backup
lsの中身をバックアップする

ddコマンド

####4.2 パーミッションの設定

アクセス権を指定する対象には

・自分
・仲間
・他人

の3種類があります。

そして設定するアクセス権には

・読み取り権限：見ていーよ
・書き込み権限：変更していーよ
・実行権限：動かしていーよ  
所有者
ファイルやディレクトリを作成すると所有者という扱いになり、プライマリグループというグループが割り当てられる。
調べ方
ls-l ファイル名

アクセス権
ファイルやディレクトリには必ずあるアクセス権
左から所有者・所有グループ・その他で分類される
u g o
＊a はすべて
左からRWX　ディレクトリが実行できないようにできないところはーで表記される。
数字で左から　４　＋　２　＋　１であらわされる
例）
rw-rw-r-- → 4 + 2=6 4+2=6 1 661と表記される
chmodコマンドで表記
chmod u+r fileA
chmod o-r fileA
chmod a=rwx fileA
chmod 622 fileA
こんな感じになるが注意しなければならないのが
実行の権限がないとき（ありえない）
そもそも最高が６から引かれることになる

SUID（4000）s

※通常の実行ファイルは実行者の権限で動作しますが、SUIDが設定されていると実行ファイルの所有者権限で動作させられます。  
ってかかれてたら、
動かす人が誰？かじゃないんだ。
所有者（このファイルを作った人）が誰かが大事なんだ。
passwordはルート権限じゃないと動かせないけど
所有者がファイルを動かせるようになる
これのグループがSGID 2000gである。
スティッキービート
/tmpに入っている
自分以外のユーザーが作成されたファイルを削除することができなくなる。
（1000）t

デフォルトのアクセス権について
umaskコマンド
デフォルトでアクセス権はいくつ設定するの？
ファイル作りました。
出来立てほやほやでrwxrwxrwx
じゃぁchmod rw-rw-rに変えましょう。
。。無駄やん
デフォルトアクセス権はどうやって決める？
umask 113にすると、、777-113 ファイルを作った瞬間に664になる

####4.3 ファイルの所有者管理
chown 所有者　ファイル名
Rコマンドは-R（再帰的でディレクトリまで変更できる）
＊所有者を変えることができる。
chgrp 所有者　ファイル名
####4.4ハードリンクとシンボリックリンク
ハードリンク
Inodeが一緒のファイルを一つ作成する
間違って片方消しても問題ない
別のファイルシステムには使えない
ディレクトリはできない
（コアはIノード）
シンボリックリンク
リンク元を消したら終了。ショートカットみたいなもの
（コアはリンク元）
コピー
まったく同じ内容の別ファイルができる
（まったく違うファイルだからどうでもよい）

lnコマンド
ハードリンク・シンボリックを作成するコマンドのこと
ln リンク元（実体）　リンク先
-sにするとシンボリックリンクが作成

####4プロセス管理

ジョブとプロセス何が違うのか？
プロセスは実行中のコマンドって考えてくれればいい。
わかりづらい理由としては、実行中の定義がわかりづらいからだと思います。
cdは〜に移動してねぇっていう意味だと思います。
実際やってみると、秒で終わっちゃいます。
cdのコマンドを打った後、PCに聞いてみましょう。おわった？って。
きっとこう言いますよ。
うるせーな。とっくに終わってるよ。
これは、実行中のプロセスとは言えませんよね？


じゃあopen file AしてってPC聞きました。
その後なんもせずに、5分後聞いてみましょう。
file A開けてる？
答えはyesです。
これを、実行中のプロセスと呼ぶべきなのじゃないでしょうか！

そんで、そのプロセス子分たちシェルを変えずに統治しているのが、JOBなんです。プロセスも、ジョブも1つにつき1つの背番号が与えられます。

ほんで、見えるところでカタカタやっているのがフォアグランドジョブ

見えないところでヒソヒソやっているのが、バックグラウンドジョブです。

ちなみに、コマンド &を使うと、最初からバックグラウンドジョブに走ってくれます。

気をつけておきたいのが、フォアグランドジョブでは、パソコンのテーブルに相当するメモリー上に起動されます。

当然起きすぎたら、パンパンスパパンになるので気をつけましょう。

psコマンドで実行中のプロセスを表示

topコマンドを押すとプロセスを継続的に監視します。システムの稼働状況、実行プロセス、CPUの状態が速報という形で出てきます
pstreeでプロセスの親子関係がツリーとしてみれます。

画面の左に書かれてる＋が、実行中のジョブ
-が直前のジョブ

runningってかかれてたら、バックグラウンドで走ってる
stoppedは一時停止

bgとfgでバックグラウンドとフォアグランドを変更

nohup で、ログアウトしても動き続ける、悲鳴を上げさせない。って覚えればいいのかな。

システムの状況を把握するときは
topかfreeコマンドをつかう。

freeはデフォルトで、空き情報をKBで検索できる。freeは空きですね。
平均負荷まで表す時は、uptimeを使いますね。

また今更ですが、今使ってる OSってなんですか。と調べるときにはunameをつかいます。

uptimeコマンドで、右の３つの数字が直近でのプロセスでの平均数。自分のPCのCPU数かコアの総数よりも多かったら、処理待ちが発生してる。

taniguchiyuujin@MacBook-Air Desktop % uptime
 9:57  up 30 days, 21:53, 2 users, load averages: 1.99 1.90 1.78
＊自分のPCのコアの総数:	2
同じコマンドを一定時間に使用する事を

watchコマンドをつかいます。
watch ls -lだったら、永遠にファイルを見続けることでしょう。

例えば上のwatchコマンドとuptimeの応用だったら
taniguchiyuujin@MacBook-Air Desktop % watch -n 10 uptime


tmuxをつけると、端末のあれこれをGUIで見れるって事なのかな？
tmuxを使うとターミナル画面を分割して同時作業ができるのと、コマンドをセーブしておけば、
次回ターミナルを開いたときに同じところから始められる
＊便利らしい
http://kanjuku-tomato.blogspot.com/2014/02/tmux.html
＊要インストール

大事なのは、ctrlを使って操る事です。
ウィンドウ操作ができるってことかな？


killコマンド
プロセスを切断する。＊
kill -1*ハングアップ
kill -2＊キーボードからの割り込み
kill -9＊強制終了
kill -15＊終了
kill -18*停止しているプロセスの再開
kill -19＊一時停止
使い方の一種としては
①pgrep -u コマンドでプロセスIDを調べる
②それに対し、プロセスIDを入れてkillする
kill -番号　プロセスID
killall プロセス名　プロセス名でプロセスの切断ができる

####4.6 プロセス管理
プロセスは不平等だ。
つまり、プロセス同士で優先順位があり
①上級国民はCPUをいただけます。
その優先度を調べるのには
topコマンドか、ps-lコマンドの2択でいけます。

優先度が高いとより多くのCPUが割かれる
紛らわしいのがナイス値が低いほど、優先度が高くなる！

実行の優先度は、

niceコマンド
これから打つコマンドに、ナイス値を設定して、コマンドを打つ
例）nice -n 10 ps -l(コマンド名)
nice値はデフォルトで10増減しますが、ルートルーザは、ふやすことはできても、へらせません。
reniceコマンド
この二つの違は、指定するプロセスidが、まだ起動してなかったら、niceコマンド、既に実行中だったら、reniceコマンドです。
例）renice -n 10 1192(今実行しているプロセスの番号)