ボクココ

個人開発に関するテックブログ

Linux/UNIX操作のまとめ(3/4)

ついに後半に突入してきました。適度に休憩を入れながらも今日は100ページ読んでまとめたのでまとめておきます。残りの章がエディタの使い方やその他のソフトウェアの使い方とかになってるのでちょっと短くなるかもしれない。
今回一番わかりにくかったのはジョブとプロセスの所。大量の省略記号があって覚えきれん! 実際にman cd とかをバックグラウンドとかにしてfgでもどしてCtrl+Zでバックグラウンドに移して。。killで終わらせてみたり・・でもな〜んか自分の思う通りに動いてくれません。
てかこれって複数のコマンドプロンプト開けばよくね?って思っちゃうんですがどうなんでしょうかねぇ〜。今はタブで1つのコマンドプロンプトで起動できちゃうし。てな感じであんま必要性を感じなかったです。


ヒストリ操作
history op filename
コマンドのヒストリを表示する
-c コマンド履歴をクリア
-w filename コマンド履歴をファイルに保存  
Ctrl+rで文字を入力すると履歴の検索。
!文字列でそれと一致した最新のコマンドを実行できる

エイリアス操作
alias 新コマンド名=定義文字列
コマンドに別の名前を付ける オプションも付けることが可能
aliasのみでエイリアス一覧を見ることも可能
本来のコマンドを実行したい場合に、/をコマンドの前につける     
エイリアス定義を削除するにはunalias 定義名
ログインする度に設定したいなら、.bashrcファイルに記述

リダイレクト機能
リダイレクト・・入力先を別のものにする
< 標準入力をファイルにする
> 標準出力をファイルにする
>> 標準出力をファイルに追加する
>& エラー情報もファイルに出力する
>>& >&の追加出力版
2> エラー情報だけをファイルに出力
標準入力を強制指定
例えば標準入力とファイルのデータを結合して違うファイルを作る
そんなときにcat - file > file1 のようにハイフンを付ける
ログを取る
script (-a) filename -aを付けると追加ログ出力
exitもしくはCtrlDで終了。viとかは使わないという配慮が必要
デブ\ヌル
いらない出力は > /dev/null へ葬る

パイプとフィルタ
あるコマンドの出力結果を別のコマンドの入力データにすることが可能
cmmand1 | command2 → command1の出力をcommand2に送り込む
ここで、command2は標準入力・出力それぞれの機能が必要ということになる。
→フィルタと呼ぶ。 片方から入ったものを何かの処理をして他方に流す
command | tee filename
画面とファイルに出力する

コマンドの連続実行
;で2行を1行にできる
&& と|| 左辺が正しく実行されたかされなかったかで右辺を条件付き実行

Linuxの起動メカニズムを知る
デーモンプロセス
daemon(守り神)
・ユーザによって必要の都度コマンド起動をされることはない
Linuxシステム起動時にあらかじめ起動され常駐するが普段は仕事しない
・ユーザの何らかのアクションにより間接的に仕事を開始する
・stdinとstdoutには対応していない
ps ax で現在起動しているデーモンプロセスを見れるtty=0のもの
代表的な例としてプリンタデーモンcupsdがある。
initから全てが始まる /sbin/initは/etc/inittabを参照してその内容に基づき初期化を実行
inittabでの主な設定
1、rc.sysinitで共通の初期化設定をする
2、rcコマンドでランレベル毎の初期設定をする
3、ランレベル5ならXWindowを起動する
エントリ(スクリプト内での命令)の書式
id:対応ランレベル:アクション:実行するプロセス
ex) 15:5:wait:/etc/rc.d/rc 5
役割:etc/rc.d/rc5.dディレクトリにK*というファイルがあればそれを引数stopで実行
etc/rc.d/rc5.dディレクトリにS*というファイルがあればそれを引数startで実行
以降これをS/Kファイルと呼ぼうその先にあるのはシンボリックリンク
/etc/rc.d/init.dディレクトリにあるファイルの多くは
システムスタート時に起動/停止させるためのスクリプト
chkconfigコマンドでS/Kファイルの設定を行うことが可能
serviceコマンドで現在のサービス状態を変更できる
service デーモン名 動作指定 

圧縮とアーカイブ
圧縮と解凍
compress , gzip , bunzip2で圧縮
uncompress,gunzip,bunzip2で解凍
-c 標準出力に出力する
-v 情報を表示する
-d 圧縮ファイルを解凍する
圧縮ファイルを見たい時に、解凍しなくてもless,gunzipで見れる
アーカイブ
tar op filename|dirname
アーカイブする・・複数のファイルをまとめて1つのファイルにする
-c アーカイブファイルを作成する
-x アーカイブからファイルを抽出する
-t アーカイブ内容の一覧を表示する
-r アーカイブの最後にファイルを追加する
-v 情報を表示する
-f filename アーカイブファイルを指定する
ファイルを分割
split op base_file
1つのファイルを複数に分割する
-行数 指定行数ずつ分割する
-b 数 指定バイト数ずつ分割する
結合にはcat spout?? > spfile2 のようにすると便利

ジョブとプロセスの管理
ジョブ・・コマンドを指定して実行させると「ジョブ」と呼ばれる実行単位になる
プロセス・・ジョブの中でさらに細かく実行されている。この小さな実行単位
複数のコマンドを実行できるが、ユーザが操作できるジョブは1つのみ
フォアグラウンドジョブ・・キーボード入力等の対話ができるもの
バックグラウンドジョブ・・裏で起動されている
command & でバックグラウンドジョブとして起動できる
jobs で現在起動しているジョブの一覧を取得
+ 直前に実行したプロセス
- 直前のさらにひとつ前に実行したプロセス
ps op
プロセス一覧を表示する
a 字文以外のユーザープロセスについても表示
f 実行命令の親子関係をツリー上に表示
l 詳細情報を表示
u ユーザ形式で表示
Ctrl+C フォアグラウンドジョブを強制終了
Ctrl+Z フォアグラウンドジョブをバックグラウンドに移す
bg バックグラウンドジョブを実行する
%ジョブ指定
+/- マークの付いているジョブを起動
fg ジョブ指定
フォアグラウンドにして実行する 指定はbgと同様
この省略記法として、%ジョブ(&) で指定できる。
&がある場合はbgで実行となる
kill op process_id(% job_num)
実行中のプログラムを終了させる
そもそもkillはシグナルを送信するためのコマンドであった 
個人用Linuxを使っている場合は仮想コンソールを切り替える方がもっと簡単

よぅっし明日で読み終えるぞ!!
そしたら次はJavaScript