#navi(ソフトウェア演習I/16)
#contents
*manコマンド [#q10b56e4]
オンラインコマンドマニュアル
 $ man man
*プロセス(Process) [#t91b6a9d]
*プロセスとは [#w9ef8c71]
-プログラムとプロセス
-マルチプロセス
-プロセス単位による保護,資源割り当て
**10.1.2 プロセスの操作 [#e305ed0c]
-新しくプロセスを作る,プログラムを実行する: ls, grep
-動いているプロセスを調べる: ps, jobs
-動いているプロセスを殺す: C^c, kill
-(動いているプロセスを一時的に止める)
-(一時的に止まっているプロセスの実行を再開させる)
-(プロセスの優先順位を変える)
-(プロセスの実行の様子を調べる)

**プロセスの属性 [#c526a73c]
プロセスの表示
 % ps
-PID:プロセスID
-TT:端末情報
-STAT
--R (Runnable)→実行可能状態
--D (Disk)→ディスク入出力中
--S (Sleep),I (Idle)→入力待ち
--Z (Zombie)→処理完了待ち
--T (Traced)→一時停止中か,デバッグ対象
-TIME:CPU時間
-COMMAND:起動したコマンド

 % ps u
 % ps l

**プロセスを殺す [#q40ce86e]
+Ctrl+Cで殺す
+psコマンドを実行し,PIDをしらべて,
 % kill PID


*10.3 プロセスの観察: ps [#b859dc08]
-PID, TT, STAT, TIME, COMMAND
 man -k terminal

**10.3.2 デーモンプロセスと端末 [#dbe9de8c]
-デーモンプロセス
 ps aux
-バックグラウンドジョブ,フォアグラウンドジョブ
-プロセスとユーザ

**10.3.5 プロセスの親子関係: ps l [#da86eedc]
-親プロセス PPID

**10.5 プロセスを殺そう [#w2865f87]
- キーによるプロセスの強制終了: 
 % C^c
または,
 % C^¥
(¥は,半角(\バックスラシュ))
- kill コマンドによるプロセスの強制終了:
 % kill -KILL $PID
//**演習 
//-ターミナルを二つ実行する.
//-ターミナル1で emacs を起動する.
//-ターミナル2で emacs のプロセスIDを確認し,そのジョブを強制終了させよ.

*プロセスまとめ [#g36c6ab6]

|コマンド|使い方|h
|ps|プロセスの一覧表示|
|ps l|親プロセスを含めたプロセスの一覧表示|
|ps u|資源を含めたプロセスの一覧表示|
|ps x|端末がないものを含めたプロセスの一覧表示|
|ps a|他のユーザを含めたプロセスの一覧表示|
|ps aux|ps a, ps u, ps x の組み合わせた一覧表示|
|stty all|端末の状態表示(BSD)|
|stty -a|端末の状態表示(Linux, System V)|
|kill '''pid'''|プロセスID '''pid'''のプロセスを殺す|
|kill -KILL '''pid'''|プロセスID '''pid'''のプロセスを殺す(必殺)|
*ファイルとディレクトリの属性 [#z12ea3e1]

**広義のファイル [#o0254871]
-普通のファイル
-広義のファイル
--名前があるファイル
--読み書きできるファイル
--プロセス間のデータのやりとり
**ファイルシステム [#ndf85ea7]
-コンピュータのリソースを操作するための、オペレーティングシステム (OS) が持つ機能の一つ
-UNIXではシステムの資源をファイルとしてアクセスする
-階層化ディレクトリ構造:木構造
**ハードリンクとシンボリックリンク [#n2c7882a]
-ln
--ハードリンク
 % ln oldname newname
--シンボリックリンク
 % ln -s oldname newname
-ノード番号を表示
 % ls -li
**ファイルとディレクトリに関するいくつかの技 [#b0459655]
-ファイルをディレクトリ以下にコピー
 % cp file1 file2 file3 dir
-ディレクトリ単位のコピー
 % cp -r olddir newdir
-ディレクトリ単位の削除
 % rm -r dirname
-ディレクトリ以下に移動
 % mv file1 file2 file3 dir
-「-」からはじまる名前のファイルの削除
 % rm ./-filename


**バイナリファイル [#oec1155c]
-od
 % od -x filename
**モードとマスク  [#nd3d7ddd]
 drwxr-xr-x  e01234  e03   directory
  rwx------  e01234  e03   file

-モード:ファイルの型とアクセス権を制御する16ビット(8進数表現する)
-モードは,ls -lコマンドで左側に表示される.
|上位4bit|uid|gid|sticky|user|group|others|h
|型|s|s|t|rwx|rwx|rwx|
|1111|1|1|1|111|111|111|


型:
|ls -l|上位4bit(8進表現)|上位4bit|意味|h
|-|010|1000|plain file(通常のファイル)|
|d|004|0100|ディレクトリ|
|l|012|1010|シンボリックリンク|
|c|002|0010|文字型デバイスファイル|
|b|006|0110|ブロック型デバイスファイル|
|s|014|1100|socket|
|p|001|0001|名前付きパイプ|
**chmodコマンド [#zf38b563]
パーミッションの変更
|文字|意味|h
|u|user|
|g|group|
|o|others|
|a|all|
|||
|r|read|
|w|write|
|x|execute|
**chownコマンド [#jbd42bb1]
所有者(owner)の変更
**chgrpコマンド [#l95cb23e]
グループの変更


例:
 % ls -l
 drwxr-xr-x    2 koji     teach        4096 Jun 27 08:51 public_html/
 -rw-r--r--    1 koji     teach           4 Jul  4 00:41 test.txt

よく使われるモード
|ls -lの表示|8進数|h
|rw-r--r--|644|
|rwxr-xr-x|755|
|rw-------|600|
|rwx------|700|
 例:
 % chmod 755 file1
 % chmod g+r file2
**8進数 [#w3062911]
|2進数|8進数|パーミッション|h
|111|7|rwx|
|110|6|rw-|
|101|5|r-x|
|100|4|r--|
|011|3|-wx|
|010|2|-w-|
|001|1|--x|
|000|0|---|


***set-uidビット,set-gidビット [#y9ee70d5]
実行ファイルのOwner,Groupの権限でユーザが実行するためのモード
ユーザ e155701 グループ e15 が,以下のコマンドhogehogeを実行したとき,
|モード|コマンド|実効ユーザ|実効グループ|h
|通常|-rwxr-xr-x  e155701 e15   hogehoge| e155701 |e15|
|set-uidビットがオン|-rwsr-xr-x  root wheel   hogehoge|root|e15|
|set-gidビットがオン|-rwxr-sr-x  root wheel   hogehoge| e155701 |wheel|

 % ls -l /{,usr/,usr/local/}{,s}bin/ | grep 'r[-w]s'
上記のコマンドで,set-uidビット,set-gidビットが立っているファイルを探そう.



-関連
--UNIXの部屋 setuid 特定の権限でコマンドを実行する仕組み http://x68000.q-e-d.net/~68user/unix/pickup?setuid
--setuid は慎重に http://www.ipa.go.jp/security/awareness/vendor/programming/b07_03.html
***stickyビット [#u7221192]
ディレクトリのOtherに対して適用されて,任意のユーザに読み書き可のディレクトリ下の削除権限をオーナーのみに限るモード(これがオンでないとき,誰にでも読み書きできるうえに,削除もされてしまう.)
 % ls -ld /private/tmp 
 drwxrwxrwt    18 root  wheel   612 Jul  6 10:26 /private/tmp/
というように,otherの実行ビットのところがtで表示される.

 % ls -l /{,private/} | grep 'r[-w]t'
上記のコマンドでstickビットが立っているディレクトリを探そう.
-関連
--UNIXの部屋 chmod http://x68000.q-e-d.net/~68user/unix/pickup?chmod




*知っていると便利なコマンド [#j230f156]
-whatis
-which
-whereis
-du
-cmp
-diff
-comm
-head
-tail
-wc
-split
-cat
-script
-find
 $ find . -name '*.c'
**Pager ページャ [#n00fea91]
-more
-less
-lv




*正規表現 [#gb43a264]
**正規表現とは [#pb590814]
-ある規則に基づいて文字列の集合を表す1つの方法
**メタキャラクタ [#y1906e5b]
|メタキャラクタ|表現|h
|.|任意の1文字|
|  ^ |行の先頭|
|  $ |行の終わり|
|  [   ] |範囲内の任意の1文字|
|  * |0回以上の繰り返し|
|  + |1回以上の繰り返し|
|  ? |あるかないか|
| \|タグ付き正規表現|
|| | または|
| (   ) |グループ化|
**例 [#u17355ef]
 ^a.*tion$
用法:
 %  look  . | grep '^a.*tion$'

 %  ls -l /{,usr/,usr/local/}{,s}bin/ | grep '^l'
*関連 [#fc549d8d]
-grep
--特定の文字や単号を含む行を抽出
-egrep
--多様な正規表現が使えるgrep
-fgrep
--正規表現の使えないgrep


*検索 [#u709cf21]
**vi [#p091f29b]

-起動
 % vi filename

-終了
 :q! [return]
-編集部分を保存して終了
 ESC を押した後
 Z Z を入力
または, 
 ESC を押した後
 :wq [return]
***検索機能 [#g22036c6]
|コマンド|意味|h
|/keyword|順方向検索|
|?keyword|逆方向検索|
|n|順方向検索繰返|
|N|逆方向検索繰返|
**Emacsでの検索機能 [#xaa79f7e]
|コマンド|意味|h
|C-s keyword|順方向インクリメンタルサーチ|
|C-r keyword|逆方向インクリメンタルサーチ|

**grep, egrep, fgrep [#gdfaf396]

~書式 grep keyword files
 % ps aux | grep '^root'

 % grep -n '^aaaa' test.txt
**find [#ff6814dc]
書式 find ディレクトリ名 検索条件
 % find . -name hello.c -print

 % find . -name '*.c' -ls 

 % find . -name '*.tex' | xargs nkf --overwrite -w

 % find . -name '*.c' -ctime -15 -ls

|オプション|意味|h
|-atime|最終アクセス時刻|
|-mtime|最終更新時刻(ファイルの中身)|
|-ctime|最終変更時刻(ファイルのステイタス)|


#navi(ソフトウェア演習I/16)

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS