101−4ファイルとプロセスの管理

ファイルの圧縮、解凍

  ・gzip [オプション] [ファイル名]  指定したファイルを圧縮。拡張子は .gz となる 

-c圧縮結果を標準出力に表示します。
-d圧縮されたファイルを展開します。gunzipコマンドと同等。
-fファイルが既に存在する場合は上書きします。
-l圧縮されたファイルの情報(サイズ、圧縮率、ファイル名)を表示します。
-r指定したディレクトリ内のファイルを圧縮します。

  ・bzip2 [オプション] [ファイル名]  指定したファイルを圧縮。拡張子は .bz2 となる 

-c圧縮結果を標準出力に表示します。
-d圧縮されたファイルを展開します。bunzip2コマンドと同等。
-fファイルが既に存在する場合は上書きします。

  ・gunzip [ファイル名]   gzipで圧縮したファイルの解凍 
  ・bunzip2 [ファイル名]  bzip2で圧縮したファイルの解凍 

  ・xz [オプション] [ファイル名]  指定したファイルを圧縮。拡張子は .xzとなる 

オプション説明
-d圧縮ファイルを展開する
-k圧縮・解凍後にファイルを元ファイルを削除しない
-l圧縮ファイル内のファイルを一覧表示する

  ・圧縮ファイルの閲覧  解凍無しで内容を表示

コマンド説明
zcatgzipコマンドで圧縮されたファイルの内容を表示
bzcatbzip2コマンドで圧縮されたファイルの内容を表示
xzcatxzコマンドで圧縮されたファイルの内容を表示

アーカイブの作成、展開

  ・tar[オプション]ファイル名あるいはディレクトリ名

オプション名概要実例
-c, –createアーカイブを作成するtar -cvf archive.tar folder
-x, –extractアーカイブからファイルを抽出するtar -xvf archive.tar
-t, –listアーカイブ内のファイルを一覧表示するtar -tvf archive.tar
-v, –verbose実行結果を詳細表示するtar -cvf archive.tar folder
-f, –fileアーカイブファイル名を指定するtar -cvf archive.tar folder
-z, –gzipgzip形式で圧縮・解凍するtar -czvf archive.tar.gz folder
-j, –bzip2bzip2形式で圧縮・解凍するtar -cjvf archive.tar.bz2 folder
-J, –xzxz形式で圧縮・解凍するtar -cJvf archive.tar.xz folder
-C, –directory指定したディレクトリで作業を行うtar -xvf archive.tar -C /tmp
-u, –updateアーカイブ内の古いファイルを更新するtar -uvf archive.tar new_file.txt
-r, –appendアーカイブにファイルを追加するtar -rvf archive.tar new_file.txt
–deleteアーカイブから指定したファイルを削除するtar –delete -f archive.tar file.txt
–excludeアーカイブの対象から指定したファイルを除外するtar -cvf archive.tar –exclude ‘*.log’ folder

  ・cpio フラグ [オプション]<ファイルrリスト>[アーカイブ]

-o / –createコピーアウトモード
(copy-out mode)
ファイルに格納するモード。アーカイブを作成する
-i / –extractコピーインモード
(copy-in mode)
ファイルから展開するモード。アーカイブからファイルを
取り出す
-p / –pass-throughコピーパスモード
(copy-pass mode)
copy-passモード。アーカイブにせつずに別ディレクトリ
などにファイルをそのままコピーする
-A / –append既存のアーカイブにファイルを追加する。
-d / –make-directories必要な場合にディレクトリを作成する
-v / –verbose処理されたファイル一覧を表示する。
-tオプションと併用すると「is -l」と同じ出力になる
-r / –rename対話的にファイル名を変更する
-t / –list入力ファイルの一覧を表示する

  ・dd [オプション]      ブロック単位でファイルをコピー、変換する

オプション意味
if=ファイル標準入力の代わりにファイルから読み出す。デバイスファイルも指定可能
of=ファイル標準出力の代わりにファイルへ書き込む。デバイスファイルも指定可能
bs=バイト数1回に読み書きするブロックサイズ(バイト数) ※2
count=個数ibsで指定したサイズのブロックを入力から個数分だけコピーする

パーミッションの設定

  ・ファイルのパーミッションと所有者の確認

  ・アクセス権

アクセス権表記説明
読み取りr read。ファイルの読み取りが可能 ( 内容表示など )
書き込みw write。ファイルへの書き込みが可能 ( 編集や上書きコピーなど )
実行x execute。ファイルの実行が可能 ( プログラムやシェルスクリプトの実行 )

        ・ファイルの種別    「- 」はファイル、「 d 」はディレクトリ、「 l 」はリンク
        ・アクセス権を数値で表す 読み取り(r = 4)、書き込み(w = 2) 実行(x = 1)

記号表記数値
0
–x1
-w-2
-wx3
r–4
r-x5
rw-6
rwx7

        ・chmod [ オプション ] アクセス権 ファイル名  アクセス権を変更する

オプション説明
-R 指定したディレクトリ以下の全てのファイルのアクセス権の変更
対象説明
u 所有者
g グループ
o その他のユーザ
a 全てのユーザ
操作説明
+ アクセス権の追加
 アクセス権の削除
= アクセス権の指定
許可の種別説明
r 読み取り権限
w 書き込み権限
x 実行権限
s SUID または SGID
t スティッキービット
実行例 : 「testdata.txt」アクセス権が変更前「644」である値を、変更後に「666」とする設定
$ chmod go+w testdata.txt

SUID、SGID、スティッキービット

比較項目数値表現文字列表現ファイルにつけた場合ディレクトリにつけた場合
SUID4000u+sそのコマンドが所有者の権限
で実行される
意味なし
SGID2000g+sそのコマンドが所有グループの権限で実行されるその中に作成されるファイルや
ディレクトリはそのグループを継承する
スティッキービット1000o+t意味なしその中のファイルを名前変更・削除できるのは所有者のみ
[/usr/bin:1]# find . -perm +4000 -ls
142970 28 -rwsr-xr-x 1 root root 27616 3月 13 23:36 ./chfn
153584 116 -rwsr-xr-x 1 root root 118128 3月 22 09:49 ./sudo

/usr/bin:1]# find . -perm +2000 -ls
142966 16 -rwxr-sr-x 1 root tty 14992 3月 13 23:36 ./write
142965 28 -rwxr-sr-x 1 root tty 27480 3月 13 23:36 ./wall


  ・umask       オプション無しで実行で現在の設定値を表示
  ・umask[マスク値]  ファイル:666からディレクトリ777からマスク値を引く
  ・chown [オプション] ユーザー[:グループ] ファイル   
             指定したファイルやディレクトリのユーザー所有権(所有者)
             やグループ所有権(グループ)を変更。
  ・chgrp [オプション] グループ ファイル   指定したファイルのグループを変更するコマンド

-R指定したディレクトリとそのディレクトリ以下のファイルやディレクトリの所有権を再帰的に変更します。

ハードリンクとシンボリックリンク

  ・ハードリンク
     inodeが同じファイル。異なるファイルが同じデータ実体を参照。

  ・シンボリックリンク
     コピーを作成するのではなく、あくまで本体ファイルやディレクトリへのショートカット、エイリアスを作成

  ・ln [オプション] リンク元(実体)リンクファイル  リンクを作成

オプション意味
-sシンボリックリンクを作成する
なしハードリンクが作成

プロセスの管理

  ・ps[オプション]      OS内部で現在実行されているプロセス一覧を表示するコマンド

オプション意味
-A, -e全てのプロセスを表示する
a端末を持つ全てのプロセスを表示する
x端末を持たない(デーモン等)全てのプロセスを表示する
-C コマンドリスト実行ファイル名を指定して表示する
-u ユーザーリストユーザーを指定して表示する(※)
-g グループリストグループを指定して表示する(※)
-p PIDリストプロセスIDを指定して表示する(p, –pidと同じ)
uユーザー名も表示する
-l長いフォーマットで表示する
f, -H, –forest階層表示する
w, -w出力時の幅を広げる

  ・top[オプション]      現在実行中のプロセスをCPU利用率が高い順に表示
                表示はリアルタイムで更新されていき、「q」を入力すると終了。

オプション説明
-bバッチモードで実行
-n 回数更新する回数を指定
-d 秒更新する間隔を指定(秒)
-u ユーザー名指定したユーザーのプロセスのみ監視

  ・kill -[シグナル名またはシグナルID] PID   プロセスに対してシグナルを送るコマンド
  ・kill -s [シグナル名またはシグナルID] PID  プロセスに対してシグナルを送るコマンド
  ・kill -SIGシグナル名 PID          プロセスに対してシグナルを送るコマンド

  ・killall -[シグナル名またはシグナルID] プロセス名   プロセスに対してシグナルを送るコマンド
  ・killall -s [シグナル名またはシグナルID] プロセス名  プロセスに対してシグナルを送るコマンド
  ・killall -SIGシグナル名 プロセス名          プロセスに対してシグナルを送るコマンド

  ・pkill [オプション][シグナル] プロセス名      プロセスに対してシグナルを送るコマンド

シグナル名シグナルID動作
HUP1ハングアップ(端末が制御不能もしくは切断による終了)
INT2キーボードからの割り込み(Ctrl+Cと同じ)
KILL9強制終了(デフォルトよりも強制的に修正する)
TERM15終了(デフォルトの設定だ)
CONT18停止しているプロセスを再開
STOP19一時停止
       kill -l ー> 利用できるシグナルの一覧を表示するコマンド
       以下のコマンドは全て同じ
         $ kill 560 / $ kill -15 560 / $ kill -s 15 560 / $ kill -TERM 560 / $ kill -SIGTERM 560
オプション説明
-u ユーザー名プロセスの実行ユーザーを指定する
-g グループ名プロセスの実行グループを指定する
      
       kill / killall / pkillの違い
         ・kill    プロセスIDを指定
         ・killall  プロセス名を指定
         ・pkill   プロセス名を指定。プロセス名を正規表現で指定

  ・pgrep [オプション] [プロセス名などのパターン]  
         実行中のプロセスの中から、プロセス名やユーザー、グループ、端末名などを表す
         パターンを使ってプロセスIDを探すコマンド

オプション説明
-u ユーザー名プロセスの実行ユーザーを指定する
-g グループ名プロセスの実行グループを指定する

ジョブ管理

  ・jobs[オプション] [ジョブ番号]  アクティブなジョブをリスト表示するコマンド

ジョブ番号説明
%nn番目のジョブ
%%、%+カレントジョブ
%-以前のジョブ
オプション説明
-lリスト表示にプロセスIDを付加します。
-pプロセスIDのみをリスト表示します。
-r実行中のジョブにのみをリスト表示します。
-s停止中のジョブにのみをリスト表示します。

  ・バックグランドジョブ
      コマンド実行時   コマンドの最後に”&”を付ける
      実行中のジョブ   Ctrl+Zでジョブを止めてジョブ番号を引数にbgコマンドを実行
  ・フォアグランドジョブ
      バックグランドで実行中のジョブ  jobコマンドでジョブ番号を確認 fgコマンドを実行

  ・nohup コマンド [引数] &  端末を閉じてもログアウトしても処理を続ける

  ・free [オプション]      システムの物理メモリとスワップメモリの使用量、空き容量を表示

オプション意味
-bメモリの量をバイト単位で表示する
-kメモリの量をKB単位で表示する(デフォルト) ※
-mメモリの量をMB単位で表示する
-gメモリの量をGB単位で表示する
-h読みやすい単位で表示する
-s 間隔再出力の間隔を「ss.tt秒」で指定する(デフォルトは1回出力して終了する)

  ・watch [オプション] コマンド     コマンドを一定間隔で繰り返し実行する

オプション意味
-tヘッダを表示しない
-d直前の実行結果から変化した箇所をハイライト表示する。
「permanent」または「cumulative」オプションを付けると
初回実行時から変化した箇所を表示する(「-d=permanent」のように指定)
-n 秒数実行間隔を秒数で指定する(設定できる最小値と最小間隔は0.1秒)

  ・uname [オプション]     システム情報を表示

-aすべてのシステム情報を表示します。
-iハードウェアのプラットフォームを表示します。
-mハードウェア名を表示します。
-nホスト名を表示します。
-oOS名を表示します。
-pプロセッサの種類を表示します。
-rカーネルのリリース番号を表示します。
-sカーネルの名前を表示します。
-vカーネルのバージョンを表示します。

端末の活用

  ・tmux     システム情報を表示

プロセスの実行優先度

  ・nice [オプション][実行したいコマンドとそのオプション] プログラムの優先度を変更して実行するコマンド

オプション意味
-n 優先度優先度
       nice -10 ー> 優先度10 
       nice –10 ー> 優先度ー10

  ・renice [-n]優先度[[-p] PID][[-u] ユーザー名] 実行中のプロセスの優先度を変更するコマンド

オプション意味
-n 優先度優先度(nice値)を指定する ※1
-p プロセスID対象のプロセスIDを指定する
-g グループID対象プロセスのグループIDを指定する
-u ユーザー対象プロセスのユーザーIDまたはユーザー名を指定する