6. ファイルとプロセスの管理
6.1. 基本的なファイルの管理
6.1.1. ファイルの圧縮と解凍
ファイルの圧縮解凍
ファイルの圧縮解凍を行うコマンドはいくつかあり、gzip, bzip2, xzなどがある。
gzip | bzip2 | xz | |
---|---|---|---|
圧縮コマンド | gzip | bzip2 | xz |
圧縮率 | 低い | 中 | 高い |
時間 | 短い | 中 | 長い |
gzipコマンド
ファイルを圧縮と解凍するコマンド。
オプション | 説明 |
---|---|
-d | 圧縮ファイルを展開 (解凍) |
-c | 圧縮ファイルを標準出力へ出力 |
-r | ディレクトリ内の全てのファイルを圧縮 |
-k | 圧縮前ファイル残す |
gunzipコマンド
ファイルを解凍するコマンド。 gunzipコマンドは gzip -d と同じ実行結果が得られる。
オプション | 説明 |
---|---|
-c | 出力を標準出力に展開して、元ファイルは変更しない |
-f | すでにファイルがある場合は上書きを行い、強制的に解凍 |
-r | ディレクトリ内の全てのファイルを再帰的に解凍 |
bzip2コマンド
gzipよりも処理時間はかかるが圧縮効率の高いコマンド。
オプション | 説明 |
---|---|
-d | 圧縮ファイルを展開 ( 解凍 ) |
-c | 圧縮ファイルを標準出力へ出力 |
-k | 圧縮前ファイル残す |
xzコマンド
bzip2よりも処理時間はかかるが圧縮効率の高いコマンド。
オプション | 説明 |
---|---|
-d | 圧縮ファイルを展開 ( 解凍 ) |
-c | 圧縮ファイルを標準出力へ出力 |
-k | 圧縮前ファイル残す |
6.1.2. 圧縮ファイルの閲覧
zcat, bzcat, xzcatなどがある。
コマンド | 対応拡張子 |
---|---|
zcat | .gz |
bzcat | .bz |
xzcat | .xz |
6.1.3. アーカイブの作成と展開
アーカイブとは
アーカイブは複数ファイルをまとめたもの。 ディレクトリ単位で圧縮を行うにはまずディレクトリをアーカイブにする必要がある。
tarコマンド
tarコマンドはファイルやディレクトリを1つのアーカイブファイルにしたり、圧縮/展開するコマンド。
デフォルトで圧縮しないため、tarコマンドで圧縮を行うためには-z
オプションや、-j
オプションを指定する必要がある。
オプション | 説明 |
---|---|
-c | アーカイブの作成 |
-x | アーカイブからファイルの取り出し |
-t | アーカイブの内容の確認 |
-f ファイル名 | アーカイブファイル名の指定 |
-z | gzip による圧縮 ・ 展開 |
-j | bzip2 による圧縮 ・ 展開 |
-J | 7zip による圧縮 ・ 展開 |
-v | 詳細な情報の表示 |
-u | アーカイブ内にある同じ名前のファイルより新しいものだけを追加 |
-r | アーカイブにファイルの追加 |
-N | 指定した日付より新しいデータのみを対象とする |
-M | 複数デバイスへの分割 |
--delete | アーカイブからファイルの削除 |
cpioコマンド
cpioはファイルをアーカイブファイルにコピーしたり、アーカイブからファイルをコピーできるコマンド。
オプション | 説明 |
---|---|
-i オプション パターン | アーカイブからファイルを抽出 |
-o オプション | アーカイブの作成 |
-p オプション ディレクトリ | ファイルを別のディレクトリにコピー |
オプション | 説明 |
---|---|
-A | 既存のアーカイブファイルに追加 |
-d | 必要な場合にディレクトリの作成 |
-r | ファイルを対話的に変更 |
-t | コピーせず、入力内容の一覧表示 |
-v | ファイル名の一覧表示 |
ddコマンド
入力側に指定したファイルからの入力をファイルまたは標準出力に送るコマンド。
オプション | 説明 |
---|---|
if= 入力ファイル | 入力側ファイルの指定 |
of= 出力ファイル | 出力側ファイルの指定 |
bs= バイト数 | 入出力のブロックサイズの指定 |
count= 回数 | 回数分の入力ブロックをコピー |
6.2. ファイルを管理する設定値
6.2.1. ファイルの情報を表すパラメータ
ファイルの情報は以下のようにls -l fugafuga
を行うと表示される。
これは以下の情報を含む * d ... ファイルのタイプ * wxr-xr-x ... アクセス権(所有者, 所有グループ, その他のユーザ) * 3 ... リンク数 * wand docker ... 所有者,所有グループ * 4096 ... ファイルサイズ
アクセス権
Linuxで作成されるファイルやディレクトリにはアクセス権(パーミッション)が設定される。 これでユーザごとにファイルへのアクセスの許可または禁止を設定できる。
アクセス権 | 表記 | 説明 |
---|---|---|
読み取り | r | read。ファイルの読み取りが可能 ( 内容表示など ) |
書き込み | w | write。ファイルへの書き込みが可能 ( 編集や上書きコピーなど ) |
実行 | x | execute。ファイルの実行が可能 ( プログラムやシェルスクリプトの実行 ) |
SUID
ユーザはUIDと呼ばれるID番号で管理されている。 SUID(Set User ID)は一時的に別のUIDのユーザに変更できる機能のこと。
chmodコマンドでSUIDを設定する場合は4000をパーミッション設定時に加算、またはu+sを追加する。
SGID
SGIDはSUIDは所有者の権限で動作するのに対して、グループの権限で動作する。
chmodコマンドでSGIDを設定する場合は2000をパーミッション設定時に加算、またはg+sを追加する。
スティッキービット
スティッキービットは所有者とrootユーザのみが名前の変更と削除を行えるようにする仕組み。 全ユーザーがファイルを作成できるが作成したファイルを他人がファイル名の変更や削除をできないようにしたい場合に使用する。
chmodコマンドでスティッキービットを設定する場合は1000をパーミッション設定時に加算、またはo+tを追加する。
6.2.2. パーミッションの設定変更
chmodコマンド
アクセス権を変更するコマンド。
-R
オプションで指定したディレクトリ以下の全てのファイルのアクセス権の変更が可能。
カテゴリー | 説明 |
---|---|
u | 所有者 |
g | グループ |
o | その他のユーザ |
a | 全てのユーザ |
定義 | 説明 |
---|---|
+ | アクセス権の追加 |
- | アクセス権の削除 |
- | アクセス権の指定 |
権限 | 説明 |
---|---|
r | 読み取り権限 |
w | 書き込み権限 |
x | 実行権限 |
s | SUID または SGID |
t | スティッキービット |
umaskコマンド
umask値の確認とumask値の設定を行うコマンドでデフォルトのアクセス権を変更できる。
passwdコマンド
パスワードを変更できるコマンド。
/etc/passwd
に変更情報が保存される。
6.2.3. ファイルの所有者の管理
chownコマンド
所有者の変更を行うコマンド。実行にはroot権限が必要。
-R
で再帰的実行が可能。
chgrpコマンド
グループの変更の変更を行うコマンド。一般ユーザーでも使用が可能。
-R
で再帰的実行が可能。
6.2.4. ハードリンクとシンボリックリンク
ファイルの実体とファイル名をつなぐ事をリンクと呼ばれ、リンクにはシンボリックリンクとハードリンクの以下の2種類がある。
ハードリンク
ハードリンクは1つのファイルの実体を複数のファイル名で表せるリンク。同じファイルの実体を共有する方式。 特徴は以下の通り。
- iノード番号(ファイルやディレクトリと1対1で紐づく情報の番号)が同じ
- リンク元のファイルが移動、削除されても、ファイルの実体にはアクセスできる
- 異なるファイルシステム上のファイルやディレクトリにリンクできない
シンボリックリンク
シンボリックリンクはリンク元ファイルが配置されている場所にリンクする方式。 プログラミング言語におけるポインタの概念に近い。
特徴は以下の通り。
- 新しいiノード番号が付与される
- リンク元のファイルが移動、削除されると、リンク元のファイルの実体にアクセスできない
- 異なるファイルシステム上のファイルやディレクトリにリンクできる
6.3. プロセスの管理
6.3.1. プロセスの監視
プロセスとは
プロセスはOSが動作中のプログラムを管理する基本単位OSが動作中のプログラムを管理する基本単位のこと。 ハードディスクからメモリ上に読み出され、実行されているプログラムがそれぞれ表される。
psコマンド
プロセス情報を確認するコマンド。 オプションは-つきとそうでないもの混在する。
| オプション | 説明 | | --- | --- | | a | 他のユーザーの全てのプロセスを表示 | | f | プロセスの親子関係を表示 | | u | プロセスのユーザー情報を表示 | | x | 端末を利用していない全てのプロセスを表示 | | -e | 全てのプロセスを表示 | | -l | プロセスの詳細情報の表示 | | -p PID | 指定したプロセスID(PID)の情報のみ表示 | | -C プロセス名 | 指定した名前のプロセスのみ表示 | | -w | 長い行を折り返して表示 |画面表示例は以下の通り。
PID TTY STAT TIME COMMAND
1358 tty1 Ssl+ 0:00 /usr/lib/gdm3/gdm-wayland-session gnome-session -
1362 tty1 Sl+ 0:00 /usr/lib/gnome-session/gnome-session-binary --aut
1380 tty1 Sl+ 0:26 /usr/bin/gnome-shell
topコマンド
現在実行中のプロセスをリアルタイムに表示するためのコマンド。 デフォルトCPU使用量降順で表示される「q」で終了可能。
pstreeコマンド
プロセスの親子関係(親プロセス、子プロセス)を確認するコマンド。
6.3.2. プロセスの終了
killコマンド
killコマンドはプロセスにシグナルを送るコマンド。
シグナルID | シグナル名 | 動作 |
---|---|---|
1 | HUP | ハングアップ |
2 | INT | 割り込み(Ctrl + C) |
9 | KILL | 強制終了 |
15 | TERM | 終了(デフォルト) |
18 | CONT | 停止しているプロセスを再開 |
19 | STOP | 一時停止 |
pgrepコマンド
PID調べるコマンド。
killallコマンド
プロセス名指定してkillするコマンド。
pkillコマンド
プロセス名指定して-u, -gでプロセスの実行ユーザー・実行グループ指定しながらkillするコマンド。
6.3.3. ジョブ管理
ジョブとは
ジョブはユーザーがコマンドやプログラムをシェル上で実行するひとまとまりの処理単位のこと。 パイプでつないだものは全体で1ジョブとなる。
フォアグラウンドジョブとバックグラウンドジョブ
ジョブにはフォアグラウンドジョブとバックグラウンドジョブの2種類がある。 通常はフォワグラウンドジョブで実行される。
ジョブ | 説明 |
---|---|
フォアグラウンドジョブ | ジョブの実行中は、シェルは停止する。 |
バックグラウンドジョブ | ジョブとシェルが同時に動作して、シェルは停止しない。 |
コマンドラインの最後に & を追加することで、コマンドはバックグラウンドジョブで実行できる。
jobsコマンド
実行中のジョブを確認できるコマンド。
nohupコマンド
ログアウト後も処理続行させるためのコマンド。
bgコマンド
停止中のジョブをバックグラウンドで動かすコマンド。
fgコマンド
バックグラウンドで動いているジョブをフォアグラウンドで動かすコマンド。
6.3.4. システム状況の確認
freeコマンド
システムの物理メモリとスワップメモリの使用量、空き容量を表示するコマンド。
短いオプション | 意味 |
---|---|
-b | メモリの量をバイト単位で表示する |
-k | メモリの量をKB単位で表示する(デフォルト) ※ |
-m | メモリの量をMB単位で表示する |
-g | メモリの量をGB単位で表示する |
メモリの量をTB単位で表示する | |
-h | 読みやすい単位で表示する |
単位を換算する際に1024ではなく1000で割って計算する | |
-l | LowメモリとHighメモリの状況も表示する ※※ |
-t | 物理メモリとスワップメモリの合計を示す行も表示する |
-s 間隔 | 再出力の間隔を「ss.tt秒」で指定する(デフォルトは1回出力して終了する) |
-c 回数 | 再出力する回数を指定する(デフォルトは1回出力して終了する) |
uptimeコマンド
システムの稼働時間、システムの平均負荷状況はuptimeコマンドにより確認できるコマンド。
以下情報が確認可能。
- システム稼働時間
- 現在ログイン中のユーザ数
- システムの平均負荷状況
unameコマンド
システムやカーネルの情報を表示するコマンド。
オプション | 説明 |
---|---|
-a, –all | 全ての情報を表示 |
-n | ネットワークノードとしてのホスト名を表示 |
-r | カーネルのリリース番号を表示 |
-s | カーネル名を表示(標準) |
-v | カーネルのバージョンを表示 |
-m | マシンのハードウェア名を表示 |
-p | プロセッサの種類を表示 |
-i | ハードウェアプラットフォームを表示 |
-o | OS名を表示 |
watchコマンド
コマンドをn秒ごと(デフォルトでは2秒間隔ごと)に繰り返し実行させるコマンド。
短いオプション | 意味 |
---|---|
-t | ヘッダを表示しない |
-e | エラー時(実行したコマンドエラーコード0以外で終了したとき)はwatchコマンドも終了する |
-b | エラー時にはビープ音を鳴らす |
-d | 直前の実行結果から変化した箇所をハイライト表示する。「permanent」または「cumulative」オプションを付けると初回実行時から変化した箇所を表示する(「-d=permanent」のように指定) |
-c | ANSIによるスタイル指定を行う |
-g | 実行結果が変化したらwatchコマンドを終了する |
-n 秒数 | 実行間隔を秒数で指定する(設定できる最小値と最小間隔は0.1秒) |
-p | 実行のタイミングを厳密にする |
-x | 指定したコマンドを「sh -c」ではなく「exec」コマンドで実行する |
6.4. プロセスの実行優先度設定
6.4.1. プロセスの実行優先度の変更
プロセスの実行優先度を変更することにより、CPU時間を多く割り当てる事が可能。 設定はnice値(値域[-20,+20])という小さいほど優先順位高いの値で設定ができる。
6.4.2. プロセスの実行優先度に関するコマンド
niceコマンド
コマンド実行時の優先度指定を指定できるコマンド。
reniceコマンド
実行中プロセスの優先度変更ができるコマンド。
6.5. 複数端末の使用
6.5.1. ターミナルマルチプレクサ
ターミナルマルチプレクサは一つの端末画面の中に複数の仮想端末を作成/切り替えができる仕組み。 デタッチ/アタッチ機能、つまり各ウィンドウの作業状況を保ったまま終了/再開が可能。
有名なターミナルマルチプレクサとしてはtmux、screenがある。
6.5.2. Tmuxの使い方
起動/操作コマンド
コマンド | 説明 |
---|---|
tmux | セッションを起動 |
tmux new -s 名前 | 名前付きセッションを起動 |
exit | セッションを終了 |
Ctrl-b d | セッションを一時的に中断してメインに戻る (Detach) |
tmux a | 中断していたセッションに戻る (Attach) |
tmux a -t 名前 | 中断していた名前付きセッションに戻る |
Ctrl-b s | セッションの一覧を表示 |
tmux list-sessions | セッションの一覧を表示 |
tmux kill-session -t 名前 | 指定したセッションを終了 |
ウィンドウ操作
コマンド | 説明 |
---|---|
Ctrl-b c | 新規ウィンドウを作成 (Create) |
Ctrl-b 数字 | 数字で指定したウィンドウに移動 |
Ctrl-b n | 次のウィンドウに移動 (Next) |
Ctrl-b p | 前のウィンドウに移動 (Prev) |
Ctrl-b l | 以前のウィンドウに移動 (Last) |
Ctrl-b w | ウィンドウの一覧を表示 (Window) |
Ctrl-b , | ウィンドウ名を変更 |
Ctrl-b ' | ウィンドウ番号を指定して移動 |
Ctrl-b . | ウィンドウ番号を変更 |
Ctrl-b & | ウィンドウ名を終了 (確認付き) |
exit | ウィンドウを終了 |