Chiroru's Diary

日々の学びをちょこちょこメモしていきます

【日報:25日目】Linux アーカイブ・圧縮 / プロセスとジョブ

【学習内容】

  • Linuxゲリラ戦記(53~83)
  • 新しいLinuxの教科書(143, 168~182, 339~355)

【目次】

アーカイブと圧縮

イカーブ

ファイルやディレクトをひとまとめにしたファイルのこと。
Linuxでファイルの圧縮する際は「アイカーブ→圧縮」のように2ステップで処理する。(※zipはこれらの作業を同時に行なっている)

またアーカイブを扱うtarは、パーミッションやオーナーなど、ファイルの属性を保持してアーカイブするため、cpよりもバックアップ用途に優れていると言える。

$ tar cf <アーカイブファイル> <アーカイブ元ファイルパス>   
# create file<アーカイブファイル>   
# ファイルをアーカイブするとき  

$ tar tf <アーカイブファイル>  
# ファイル一覧の出力(cfした後に確認すると良い)  

$ tar xf <アーカイブファイル>  
# アーカイブファイルを展開し、取り出す(xオプション)  
# 展開した時に同じファイル名の物があると上書き保存されるので要注意  

$ tar cvf file.tar file  
# 作成時にファイルリストを表示(※エラー表示を見落とす可能性があるので非推奨)  

$ tar cvf <アーカイブファイル> [ファイル名|ディレクトリ名]  
# アーカイブファイルを作成し、一覧表示&ファイル名の指定  

$ tar tvf filr.tar  
# ファイル詳細情報の表示

圧縮

gzipコマンドを利用する。拡張子は.gz

$ gzip <ファイル>  
# ファイルを圧縮する(この時元となったファイルは削除される!)  

$ gzip -d <ファイル>  
# 圧縮ファイルを展開し、元に戻す(この時gzファイルは削除される!)  

$ gzip -c ファイル > 任意のファイル名  
# 出力をリダイレクトで扱う「-c」オプション。任意のファイル名で圧縮  

しかし現在ではtargzip圧縮機能が備わっているので、tarコマンドだけでもファイルを作れる。

$ tar czf file.tar.gz file
# tar+gz形式のファイルを作る  

$ tar xzf file.tar.gz  
# ファイルの展開(zでtar+gzファイル扱い可)  

$ tar cf - <アーカイブ元ファイルパス> | gzip -c > file.tar.gz   
# アーカイブファイルを-にすることで標準出力される
# 一時的な中間ファイルを作ることなく圧縮までできる

参考:新しいLinuxの教科書(339~354)

Linuxでzipを扱う

圧縮するzip、展開するunzipを利用する。

$ zip -r <圧縮ファイル名> <対象パス>  
# zipの作成(-rはセットとして使う)  

$ zip -er <圧縮ファイル名> <対象パス>  
# PWつき

$ zipinfo file.zip  
# 内容確認  

$ unzip file.zip  
# ファイル展開  

参考:新しいLinuxの教科書(352~355)

電源OFF・再起動コマンド

# halt  
# 電源OFF  

# rebot  
# 再起動  

# shutdown -h now  
# Linuxすぐシャットダウン  

# shutdown -h +5  
# 5分後シャットダウン  

# shutdown -h 13:25  
# 13:25にシャットダウン  

# shutdown -r now  
# Linux再起動  

tmp

テンポラリファイルは、プログラムの処理のために一時的に使用するファイルのこと。
またtmpディレクトリはそれらを一時的に保存するためのもの。

ファイルの削除はプログラムに処理を書いて行うのが良い。

$ mktemp
# 一時ファイルを作成する

$ mktemp -d  
# 一時ディレクトリを作成する

参考:72.tmpディレクトリの話3

export

環境変数を自分で設定するためのコマンド。

$ export <シェル変数名>  

例) mybinディレクトリにパスを通す

$ export PATH="$PATH:~/mybin"

参考:新しいLinuxの教科書(143)

Linux拡張子はなくても良い

ファイル名の拡張子は無くてもプログラムは動く

プロセスとジョブ

プロセス

実行状態にあるプログラムのこと。「カーネルから見た」処理の単位。
カーネルが各プロセスに「プロセスID」を割り振って管理しているため、同コマンドから実行されているプロセスも別個のものとして扱われる。

$ ps  
# 現在動いているプロセス確認  

$ ps xf  
# 現在実行している全てのプロセス表示(xが別ターミナルのものやデーモンを表示するもの)  

$ ps ax  
# システム全てで動いてるプロセス表示  

ジョブ

「シェルから見た」処理の単位。重複する「ジョブ番号」を持つ。

  • コマンドが一つだったら単位はプロセス=ジョブ
  • パイプで繋ぐと単位はプロセス=コマンドごと/ジョブ=コマンドライン全体で1
操作 意味
Ctrl+z ジョブ停止
Ctrl+c フォアグランドジョブ状態を終了するとき
kill %<ジョブ番号> バックグラウンド状態を終了させるとき
jobs ジョブ一覧を表示する
jobs -l ジョブ一覧にプロセスIDも表示
fg %<ジョブ番号> 入力受付状態(フォアグランド)にする
bg %<ジョブ番号> 処理を続行しながらシェルに戻れる(状態確認はjobs)

参考:新しいLinuxの教科書(168~182)