Nov14th

LPIC1

Top / LPIC1

dateコマンド

%A  Sunday、日曜日
%B  Juanuary、1月
%H  時 00、23
%M  分 00、59
%c  日時 2012年 3月 30日  12時16分30秒
%x  日付 2012年 3月 30日
例)date "+Date:%x Time:%H:%M”
Date:2012年 3月 30日 Time:12:16

ドキュメントファイルパス

/usr/share/man
/usr/local/share/man

historyコマンド

-c  そのシェルの実行履歴を消去
-d {履歴番号}  履歴番号のコマンドを消去

mkdirコマンド

-p  中間ディレクトリも同時に作成

ワイルドカード

file.?  file.o、file.a
file.*  file.o、file.a、file.abc
[abc]  abcのいずれか
[!0-9]  0~9以外の数字
[0-9!]  0~9の数字とエクスクラメーション
[a-zA-Z0-9_-]  すべてのアルファベット、数字、アンダーバー、ハイフン

cpコマンド

-i  上書を聞く
-f  強制上書き
-p  コピー元の所有者、タイムスタンプ、アクセス権を保持
-r  ディレクトリ階層ごと

lsattrコマンド

ext2ファイルシステムのファイル属性を表示
lsattr file_a

rootでも削除できないようにファイルを保護

# chattr +i file_a
# lsattr file_a
-----i----------e-  file_a
# chattr -i file_a
# lsattr file_a
----------------e-  file_a

i:変更不可属性

rmコマンド

-i  確認する
-f  強制
-r  ディレクトリ内のファイルディレクトリ

tarコマンド

-c  新しくアーカイブ作成
-f  ファイル名指定
-t  アーカイブ内のファイル一覧表示
-x  展開
-z  gzipで圧縮または展開を同時に実行 .tar.gz
・アーカイブ
 tar cvf tarファイル名 アーカイブ対象ディレクトリ 
・圧縮+アーカイブ
 tar cvzf tgzファイル名 圧縮対象ディレクトリ
・展開
 tar xvf tarファイル名
・解凍+展開
 tar xvzf tgzファイル名
・アーカイブファイルのファイル一覧
 tar tvf tarファイル名
・圧縮+アーカイブファイルのファイル一覧
 tar tvzf tgzファイル名

標準出力、エラー出力

・エラー出力をファイル出力
   ls no_file 2> out.txt
・標準、エラー出力両方をファイル出力
   ls file no_file &> out.txt
   ls file no_file 1> out.txt 2>&1
・表示なし
   ls file no_file > /dev/null 2>&1

nl、tacコマンド

・行番号付与後、最終行から表示
   nl fileA | tac

コマンド連続実行

・コマンド1、コマンド2を順々に実行
   コマンド1 ; コマンド2
・コマンド1正常後、コマンド2を実行
   コマンド1 && コマンド2
・コマンド2異常後、コマンド2を実行
   コマンド1 || コマンド2

grepコマンド

-v  パターンに一致しない行を表示
-n  行番号を表示
-l  パターンと一致するファイルを表示
-i  大文字、小文字を区別しない

xargコマンド

他のコマンドを実行する
 #ls
 fileA fileB fileC
 #echo "fileA fileB" | xargs ls -l

trコマンド

・小文字⇒大文字変換
   tr 'a-z' 'A-Z'
・myを削除
   tr -d 'my'

sedコマンド

 s/パターン/置換文字列/   各行を対象に、最初にパターンに合致する文字列を置換
 s/パターン/置換文字列/g   ファイル内全体を対象に、パターンに合致する文字列を置換
 d   パターンに合致する行を削除
 p   パターンに合致する行を表示
・1行目を削除
   sed '1 d' file.txt
・2~5行目を削除
   sed '2,5 d' file.txt
・空白行を削除
   sed '/^$/d' file.txt
・行末にtestを追加
   sed 's/$/test/' file.txt
・usre01が含まれる行だけ表示
   sed -n '/user01/p' file.txt

cutコマンド

・フィールドの区切り:空白、2番目を取り出す
   cut -d ' ' -f 2 file.txt
・フィールドの区切り:空白、1番目と3番目を取り出す
   cut -d ' ' -f 1,3 file.txt
・1文字目~3文字目を取り出す
   cut -c 1-3 file.txt
・プロセスIDを表示
   ps aux | cut -c 1-5

wcコマンド

-c  バイト数だけ出力
-l  行数だけ出力
-w  単語数だけ出力
 ・登録ユーザ数を表示
   cat /etc/passwd | wc -l

odコマンド

ファイル内容を8進数表示
 -d  10進数表示
 -x  16進数表示

改行コード

LF \n
CR \r
CR+LF \r\n

expandコマンド

タブをスペースに変換

sortコマンド

#cat file.txt
a 2 linux3
b 1 linux2
c 3 linux1
#sort -k 1 file.txt
a 2 linux3
b 1 linux2
c 3 linux1
#sort -k 2 file.txt
b 1 linux2
a 2 linux3
c 3 linux1

uniq

並び替え済のファイルから重複行削除
uniq [オプション] [ファイル名]

split

ファイルを決まった大きさに分割
split [オプション] [入力元ファイル] [プレフィックス] 

join

2つのファイルを読み込み、フィールドが共通の行を結合
join [オプション] [ファイル1] [ファイル2]

正規表現

・メタキャラクタ
   c  文字cに一致(c≠メタキャラクタ)
   ¥c  文字cに一致(c=メタキャラクタ)
   .  任意の文字に一致
   ^  行の先頭
   $  行の末尾
   *  直前の文字列が0回以上の繰り返しに一致
   ?  直前の文字列が0回もしくは1回の繰り返しに一致
   +  直前の文字列が1回以上の繰り返しに一致
   []  []内の文字グループと一致
           [abAB] [^abAB] [a-dA-D]
・android99.を検索したい場合
   $ grep '^a.*\.$' frile.txt
・空白行以外の行表示
   $ grep '.' file.txt
・ピリオドを含む行表示
   $ grep '\.' file.txt
・Linux,linuxのいずれか含む行表示
   $ grep '[Ll]inux' file.txt
・先頭の行が数値以外表示
   $ grep '^[^0-9]' file.txt
・先頭が#で始まるコメント行以外表示
   $ grep '^[^#]' file.txt
・$ grep 'user[0-9][0-9]?.abc' file.txt
   user10.abc
   user0.abc
・$ grep 'user[0-9][0-9]+.abc' file.txt
   user10.abc
   user123.abc

・fgrepコマンド

    ⇒文字列として扱われる
   $ fgrep '.a[~b].a' file.txt
   .a[~b].a
   $ gre/p -F '.a[~b].a' file.txt
   .a[~b].a

・viコマンド

   ・カーソル移動
   h、←
   j、↓
   k、↑
   l、→
   ^  行先頭
   $  行末尾
   G  最終行
   nG n行目
   [Ctrl]+[b]  先頭に向かって1画面ずつ
   [Ctrl]+[f]  末尾に向かって1画面ずつ
   ・保存
   ZZ、:wq  保存して終了
   :! ls -l ファイル名  viから抜けずにコマンド実行
   ・入力モード
   i  カーソルの前
   a  カーソルの後
   o  カーソル行の下行に先頭から
   l  カーソル行の先頭
   A  カーソル行の末尾
   O  カーソル行の上行に先頭から
   ・削除
   x   1文字削除
   ndd  カーソル行からn行削除
   ・コピー
   yy  カーソル行をコピー
   yw  単語のコピー
   P   カーソル行の上に貼付け
   p   カーソル行の下に貼付け
   ・検索
   /文字列  現在のカーソルからファイルの末尾へ検索
   ?文字列  現在のカーソルからファイルの先頭へ検索
   n     次を検索
   N     前を検索
   ・繰り返し
   u  最後に実行した編集の取り消し
   .  最後に実行した編集の繰り返し
   ・ログイン後にbashがviモードで認識するようにする
   set -o vi

・psコマンド

  pid  プロセスID
  TTY  制御している端末
  TIME 実行時間
  CMD コマンド
  ・オプション(UNIX)
   -e  すべてのプロセス表示
   -f  詳細表示
   -l  長いフォーマットで詳細表示

・pstreeコマンド

  プロセスのツリー構造表示
  init
  sendmail  sshd  login
         sshd  bash
         bash

・nice値

  nice
  renice 動作中のプレセス優先度変更(topコマンドでも可 rキー)
    renice 15 -p 19442

・ジョブ

  jobs   バックグランドジョブと一時停止中ジョブの表示
  [Ctrl]+[z]  実行中ジョブの一時停止
  bg %ジョブID  バックグラウンドジョブへ
  fg %ジョブID  フォアグラウンドジョブへ

・nohupコマンド

  nohup コマンド名 &

・シグナル

  1    SIGHUP  端末の切断によるプロセス終了
  2    SIGINT  割り込みによるプロセス終了(Ctrl+C)
  9    SIGKILL  強制終了
  15  SGTERM  デフォルト終了
  18  SIGCONT  一時停止したプロセスを再開
  kill -l  シグナル名の一覧表示

・FHS:Filesystem Hierarchy Standard

  ・バージョン2.3のオプション
     /home  /root
  ・追加インストールした静的パッケージ
    /opt
  ・システム起動時に必要なコマンド
    /bin  /sbin
  ・ユーザが開発したプログラム
    /usr/local/bin
  /   ルートディレクトリ。/etc、/bin、/sbin、/lib、/devは必須。
  /boot ブートローダ関連のファイル、カーネルイメージ
  /usr 他ホストと共有できるデータ。独立パーティション推奨。
  /home ユーザホーム。独立パーティション推奨。
  /var 運用中にサイズが変化するファイル。独立パーティション推奨。
  /tmp 誰でも読み書き可能な共有データ。独立パーティション推奨。
  /swap 入りきらない実メモリを退避。

・OSログ

  /var/log/messages システムログ
  /var/log/dmesg  起動時にカーネルより出力されるメッセージログ
  /var/log/cron   スケージューリングサービスのcron履歴情報

・デバイス

  SCSI、SATA  /dev/sd〇
  IDE、ATA   /dev/hd〇
   〇:a、b、c…
   マザーボードに接続された1本のIDEケーブルでマスター(hda)とスレーブ(hdb)の2つのディスク接続できる
   hda1-4:基本パーティション、そのうち1つのみを拡張パーティションにできる。拡張パーティションを論理パーティションに分割(hda5~)

・ハードディスクの新規作成手順

  ①ハードディスクを接続
  ②ディバイスファイル確認 ls /dev
  ③パーティショニングを検討
  ④ハードディスクにパーティションを作成 fdisk
  ⑤各パーティションにファイルシステムを作成
  ⑥ファイルシステムをマウント

・fdiskコマンド

  fdisk /dev/sdb
    d 領域を削除
    l ファイルシステムのタイプを表示
    m 利用可能なメニュー表示
    n 新規パーティション作成
    p パーティションテーブル表示
    q 変更を保存せずに終了
    t ファイルシステムのタイプ変更
    w テーブルをディスクに書き込み終了

・ファイルシステム

  ファイルシステム       ext   ext2   ext3   ext4
  リリース時期         1992/4 1993/1 2001/11 2008/12
  カーネルバージョン      0.96   0.99   2.4.15  2.6.28
  最大ファイルサイズ      2GB   2TB   2TB    16TB
  最大ファイルシステムサイズ  2GB   32TB   32TB    1EB
  他:reiserfs、xfs、jfs、vfat

・ジャーナル機能

 ファイルシステムのデータ更新を記録する機能。不意な電源断の時、変更履歴から管理データの再構築可能。

・ファイルの構成要素

   ファイル名:ファイルにつけられている名前
   iノード:メタデータを格納。実ファイル1つにつき1個。ファイルの詳細情報、実データの番地(ポインタ)を格納。
   データブロック:実データ

・mkfsコマンド

  mkfs -t [ファイルシステムタイプ] [デバイスファイル名]
  mkfs -j [デバイスファイル名]  …ジャーナルが有効になり、ext3で作成される

・mke2fsコマンド …オプションなしだとext2で作成

  mkfs -j [デバイスファイル名]  …ジャーナルが有効になり、ext3で作成される

・xfsファイルシステム  …独自コマンドのため、別途インストール必要

   mkfs -t xfs [デバイスファイル名]
   xfs_info     xfsファイルシステムの情報表示
   xfs_metadunp  xfsファイルシステムからファイルにメタデータをコピー
   xfs_freeze    xfsファイルシステムへのアクセスを中断or再開

・スーバーユーザしか書き込めない予備領域のデフォルト値はファイルシステム全体の5%。超えるとroot権限以外は書き込み不可。

・Linuxログ管理

 /etc/syslog.conf
  <メッセージ出力元(ファシリティ)> . <優先度>   <ログ出力先>
    mail.error   /var/log/maillog-error

・インストール

 $ tar zxf prog.tar.gz
 $ cd prog
 $ ./configure
 $ ./configure
 $ make
 # make install

・ダイナミックリンク(動的リンク)

 共有ライブラリファイル→/libや/usr/lib配下
 /etc/ld.so.conf  …有ライブラリファイルを検索する対象ディレクトリを指定する設定
  → /etc/ld.so.cache
 更新 # ldconfig
 /bin/asdfg が実行時に必要とする共有ライブラリを調べたい
 →ldd /bin/asdfg

・umask値

 ファイル 666-umask
 ディレクトリ 777-umask

・ログインメッセージ

 ユーザーのログイン完了後に表示 → /etc/motd
 ユーザーの ログイン前に表示 → /etc/issueもしくは/etc/issue.net

・ブートローダーGRUB

 /etc/grub.conf
 ・title OSのラベル
 ・root ルートパーティション
 ・initrd 初期RAMディスクイメージ
 ・makeactive パーティションをアクティブにする
 ・default デフォルトのOS 

・3分後に再起動

 shutdown -r +3

・ulimitコマンド

 シェルや子プロセスが利用できるシステムリソースを制限
 ulimit -a 現在の設定表示

・コマンドのパス表示

# which mke2fs
/sbin/mke2fs

# whereis mke2fs
/usr/sbin/mke2fs /etc/mke2fs.conf /usr/share/man/mke2fs.8.gz

# whatis mke2fs
mke2fs (8) - create an ext2/ext3/ext4 filesystem

・shutdownコマンド

 shutdown -Fh now
 -F 次回起動時に強制的にファイルシステムチェック実行
 -f 次回起動時にファイルシステムチェックを実行しない
 -h シャットダウン後にシステム停止
 -r シャットダウン後にシステム再起動
 -k ユーザーに警告メッセージ
 -c シャットダウンをキャンセル

・dumpコマンド

 dump 0uf /dev/st0 /dev/hda1
 →/dev/hda1をSCSIテープドライブ/dev/st0にバックアップする
  0 フルバックアップ
  u バックアップ記録を/etc/dumpdatesファイルに記録する
  f バックアップファイル指定

・fstabファイル

 デバイスファイル マウントポイント ファイルシステムタイプ マウントオプション dumpフラグ fsckフラグ

・hwclockコマンド

 ハードウェアが管理する時間→ハードウェアクロック
 カーネルが管理する時間→システムクロック
 hwclock --systohc システムクロックをハードウェアクロックに書き込む
 hwclock --hctosys ハードウェアクロックをシステムクロックに書き込む

・ntpdateコマンド

 インターネット上のNTPサーバから正確な時刻を取得してシステムクロックを更新する

・manコマンドのセクション

 Section1:一般的なコマンド
 Section2:システムコール(カーネルの機能)
 Section3:ライブラリコール(システムライブラリの関数)
 Section4:特殊なファイル
 Section5:ファイルフォーマット
 Section6:ゲーム
 Section7:その他
 Section8:システム管理用のコマンド

・ソフトウェアのインストール

 (1) ダウンロードしたファイルの圧縮を解凍する(gzip、gunzip、bzip、bunzip)
 (2) アーカイブを展開する(tar)
 (3) Makefileを生成する(configure)
 (4) コンパイルする(make)
 (5) インストールする(make install)   →root権限が必要