LoginSignup
0
0

Linuxでファイル操作(解凍、圧縮、アーカイブ作成、プロセス、ファイル検索)

Last updated at Posted at 2022-06-27

gzipコマンド

gzipコマンドを使うとファイルを圧縮したり圧縮前のファイルに戻したり(展開、解凍)できます。

$ gzip

gzipコマンドのオプション

以下のオプションもgzipコマンドを使う時に使います。
上のコマンドだけだとファイル作成後の元のファイルが削除されてしまいます。

オプション 意味
-c 標準出力へ出力
-d 圧縮ファイルを展開
-k 圧縮、解凍後に元ファイルを削除しない
-r ディレクトリ内のファイルを全て圧縮する

使い方はオプションの後にファイル名をつけます。

-cの使い方をみてみます。

$ gzip -c test.txt > test.txt.gz

test.txt.gzを残したままファイルを圧縮し標準出力をします。

gzip以外のコマンド

bzip2コマンドも使えます。ファイルの末尾が.bz2になります。
xzコマンドもありあます。

$ bzip2 test.txt
bzip2: Input file test.txt is a directory.

ディレクトリを.bzにすることはできませんでした。

% xz test.txt
xz: test.txt: Is a directory, skipping

ファイルでは圧縮することはできました。

解凍のやり方

ファイル種類 コマンド
.gz gunzip
.bz2 bunzip2
.xz unxz

-dも入れると解凍できます。

アーカイブ作成

アーカイブとは複数のファイルを1つのアーカイブファイルにまとめることです。

アーカイブファイルではtarコマンドを使います。

オプション 意味
-c アーカイブ作成
-f アーカイブファイル名指定
-r アーカイブにファイル追加
-t アーカイブの中身を確認
-x アーカイブからファイルを取り出す
-z gzipによる圧縮、展開をする
-j bzip2ファイルを扱う
-v 詳細を表示

-は省略できるみたいです。

アーカイブの操作をしてみる

上の表をベースに実際に動かしていきます。

Animalディレクトリを見ながらやっていきます。

Animal % ls       #一覧表示
cat	dog	monkey
Animal %tar -cf animal.tar cat dog monkey     # -cfでanimal.tarのアーカイブファイルを作成し、 cat dog monkey をまとめる
Animal % ls
animal.tar	cat		dog		monkey
Animal % tar -tf animal.tar     #-tfでanimal.tarのアーカイブの中身を表示
cat
dog
monkey

次はアーカイブの中身を取り出してみます。

Animal % tar -xf animal.tar
Animal % ls
animal.tar	cat		dog		monkey

次にファイルを作成して圧縮します。

Animal % tar -czf animal.tar.gz cat dog monkey  #-cfzでファイルを作成し、圧縮展開
Animal % ls
animal.tar	animal.tar.gz	cat		dog		monkey

animal.tar.gzの中を見てみます。

Animal % ls
animal.tar.gz
Animal % gunzip animal.tar.gz
Animal % ls
animal.tar
hashimotonoriaki@MacBook-Pro-3 Animal % tar -tf animal.tar
cat
dog
monkey

これでファイルを作成して圧縮することができました。
次にアーカイブファイルの中身を確認していきます。

Animal % tar -czf Zoo.tar.gz dog monkey gorillas
Animal % ls					
Zoo.tar.gz	dog	 monkey	 gorillas	
Animal % tar xvzf Zoo.tar.gz
x dog
x monkey
x gorillas/
Animal % ls
dog		gorillas  monkey  elephant	
Animal % tar cf Zoo.tar dog monkey gorillas
Animal % ls
dog		gorillas 	monkey	elephant  Zoo.tar	
Animal % tar rf Zoo.tar elephant    #elephantを追加
hashimotonoriaki@MacBook-Pro-3 Animal % ls
dog			gorillas	monkey	 elephant		
Zoo.tar		

cpioコマンド

3つのモードがあります。

⚫︎コピーアウトモード
⚫︎インサートモード
⚫︎コピーパスモード

Animal % ls > dog        
Animal % vi dog
Animal % cpio -o < dog  > dog.cpio
2 blocks
Animal % ls
dog		dog.cpio	monkey		practice.txt	xaa
Animal % ls -l
total 32
-rw-r--r--  1 taro  staff    28  7  4 16:27 dog
-rw-r--r--  1 taro  staff  1024  7  4 16:28 dog.cpio
-rw-r--r--  1 taro  staff    28  7  1 15:02 monkey
drwxr-xr-x  4 taro  staff   128  6 28 17:54 practice.txt
-rw-r--r--  1 taro  staff    49  6 30 13:26 xaa
Animal % ls | cpio -o > monkey.cpio
cpio: monkey.cpio: Can't add archive to itself
4 blocks
hashimotonoriaki@MacBook-Pro-3 Animal % ls -l
total 40
-rw-r--r--  1 taro  staff    28  7  4 16:27 dog
-rw-r--r--  1 taro   staff  1024  7  4 16:28 dog.cpio
-rw-r--r--  1 taro   staff    28  7  1 15:02 monkey
-rw-r--r--  1 taro  staff  2048  7  4 16:33 monkey.cpio
drwxr-xr-x  4 taro   staff   128  6 28 17:54 practice.txt
-rw-r--r--  1 taro   staff    49  6 30 13:26 xaa

Animal % mkdir copyto
Animal % ls       
copyto		gorillas	monkey.cpio	xaa
dog		monkey		practice.txt
Animal % ls -l
total 32
drwxr-xr-x  2 taro staff    64  7  4 16:47 copyto
-rw-r--r--  1 taro staff  1024  7  4 16:28 dog
drwxr-xr-x  2 taro staff    64  7  4 16:35 gorillas
-rw-r--r--  1 taro staff    28  7  1 15:02 monkey
-rw-r--r--  1 taro staff  2048  7  4 16:33 monkey.cpio
drwxr-xr-x  4 taro staff   128  6 28 17:54 practice.txt
-rw-r--r--  1 taro staff    49  6 30 13:26 xaa
Animal % cpio -pd copyto < monkey      
3 blocks

メタキャラクタ

文字の代わりとなる記号です。

メタキャラクタ 説明
* 0文字以上の文字または文字列にマッチする。【例】「a*」であれば「a」「ab」「abc」「aaaa」のいずれもマッチする。0文字もマッチすることに注意。
? 任意の1文字にマッチする。【例】「a?」であれば「aa」「ab」「a1」などはマッチし、「a」「abc」などにはマッチしない。
[] []内に列挙されている文字のいずれか1文字にマッチする。連続した文字列には「-」が使用できる。[a-z]は英小文字すべて、[0-9]は数字すべて、指定範囲の先頭に「!」を使うとマッチしない範囲を指定できる。【例】「a[bcd]」は「ab」「ac」「ad」のいずれかにマッチする。「a[!bcd]」は「aa」「a1」はマッチするが、「ab」「ac」「ad」にはマッチしない。
{} {}内の文字を使って文字列を生成する。【例】「test{1,2}」はtest1、test2を生成する。

引用 https://tech.pjin.jp/blog/2021/01/31/linux-metacharacter

findコマンド

アクセス権のあるディレクトリ内やファイルを検索します。
書き方は

$ find ディレクトリ名 検索式

-name ファイル名のようなファイル名検索などがあります。-type ファイルの種類、-user ユーザー名 などもあります。
-execコマンド{};のようなマッチしたコマンドを実行するものもあります。

taro% ls -l ./Animal/
total 16
-rw-r--r--  1 taro  staff   7  6 28 10:54 dog
-rw-r--r--  1 taro  staff   7  6 28 10:55 monkey
drwxr-xr-x  2 taro  staff  64  6 28 13:20 practice.txt
taro % find ./Animal -name dog  #findコマンドでAnimalの中のdogを探す
./Animal/dog

locateコマンドとupdatedbコマンド

locateコマンドはあらかじめ作成されたファイル名データベースの中からファイルを検索します。
updatedbコマンドでデータベースを作成更新しておく必要があります。

$ updatedb  #データベース更新

$ locate 

この記事に細かい使い方が載っています。

which、whereis、typeコマンド

which絶対パスを表示するコマンドです。
whereis指定したコマンドのオプションで指定したファイルの場所を検索します。
typeはどんなコマンドなのか表示します。

ディレクトリの構造

ディレクトリは木みたいな構造になっています。

image.png

引用  https://gicp.co.jp/manegementnote/directory-structure/

この記事に細かいディレクトリの説明があります。

プロセス

プロセスとはLinuxで実行中のプログラムのことです。
他にもマルチタスクという複数のプロセスを同時に稼働できるシステムです。

プロセスの確認

コマンド オプション 意味
ps a 全てのプロセス表示
ps f 親子関係をツリー表示
ps u ユーザー名表示
ps x 制御していないデーモンなどのサービス表示
ps -e 全てのプロセス表示
ps -f 詳細情報(完全なflオーマット)表示
ps -l 詳細情報表示
ps top 稼働プログラムを監視
ps pgrep 特定のPIDを調べたい時
ps pstree 親子関係を階層構造で表示

またtopコマンドでは稼働状況を見る時だけはuptimeコマンドを使いQで終了します。
pgrepコマンドに-lをつけるとPIDに加えプロセス名を表示します。

⚫︎補足

$ ps ax
$ ps -ef

デーモンも含めてプロセスを表示します。

psコマンドで表示されるもの

psコマンドを実行すると以下のようになります。

taro@MacBook-Pro-3 ~ % ps a
  PID   TT  STAT      TIME COMMAND
30775 s000  Ss     0:00.16 login -pf taro
30776 s000  S      0:00.17 -zsh
35446 s000  R+     0:00.02 ps a
 1078 s005  Ss+    0:00.08 /usr/local/bin/zsh -l
PID プロセスID
TTY 端末の名前
STAT プロセスの状態
TIME 実行された時間
COMMAND 実行名

プロセス終了コマンド

killコマンドを使います。
こちらの記事を読んでみてください。

他にもkillallコマンドとpkillコマンドがあります。

killall 入力された名前と一致するプロセスを終了
pkill プロセス名を指定し、言葉が含まれる全てのプロセスを終了します。

-Uならユーザー名、-Gならグループ名を指定します。

それぞれの使い方です。

taro@MacBook-Pro-3 ~ % sleep 100000 &
[1] 35511
taro@MacBook-Pro-3 ~ % sleep 200000 &
[2] 35512
taro@MacBook-Pro-3 ~ % ps a 
  PID   TT  STAT      TIME COMMAND
30775 s000  Ss     0:00.16 login -pf taro
30776 s000  S      0:00.20 -zsh
35511 s000  SN     0:00.00 sleep 100000
35512 s000  SN     0:00.00 sleep 200000
35516 s000  R+     0:00.00 ps a
1078 s005  Ss+    0:00.08 /usr/local/bin/zsh -l
taro@MacBook-Pro-3 ~ % killall sleep
[2]  + terminated  sleep 200000
[1]  + terminated  sleep 100000
taro@MacBook-Pro-3 ~ % sleep 100000 &  
[1] 35524
taro@MacBook-Pro-3 ~ % sleep 200000 &
[2] 35526
taro@MacBook-Pro-3 ~ % ps a          
  PID   TT  STAT      TIME COMMAND
30775 s000  Ss     0:00.16 login -pf taro
30776 s000  S      0:00.22 -zsh
35524 s000  SN     0:00.00 sleep 100000
35526 s000  SN     0:00.00 sleep 200000
35527 s000  R+     0:00.01 ps a
 1078 s005  Ss+    0:00.08 /usr/local/bin/zsh -l
taro@MacBook-Pro-3 ~ % pkill slee
[2]  + terminated  sleep 200000
[1]  + terminated  sleep 100000

⚫︎sleepとは
指定された秒だけPCのプロセスの動作を止めます。

ジョブ

ジョブとはユーザーがコンピューターに実行させる処理のかたまりです。

フォアグラウンドジョブとバックグラウンドジョブ

フォアグラウンドジョブではジョブが終了するまで作業ができません
バックグラウンドジョブではジョブが裏側で実行され、ジョブが終了しなくても入力できます。

バックグラウンドジョブで実行する

コマンドラインの最後に&をつけます。

$ sleep 120 &

これで2分間実行されます。
下は20秒で設定しました。

taro@MacBook-Pro-3 ~ % sleep 20 &
[1] 35672
taro@MacBook-Pro-3 ~ % ps
  PID TTY           TIME CMD
30776 ttys000    0:00.24 -zsh
35672 ttys000    0:00.01 sleep 20
 1078 ttys005    0:00.08 /usr/local/bin/zsh -l
taro@MacBook-Pro-3 ~ % cal
      6月 2022         
日 月 火 水 木 金 土  
          1  2  3  4  
 5  6  7  8  9 10 11  
12 13 14 15 16 17 18  
19 20 21 22 23 24 25  
26 27 28 29 30        

ブートプロセス(systemd)

Linuxが起動づるまでの流れ(ブートプロセス)についてです。

ざっくりですが
電源が入る ⏩ BIOS(UEFI)が起動   ⏩  Linuxが起動(カーネル、initあるいはsystemd)  ⏩  操作可能  

systemdがLinuxの起動処理やシステム管理をする仕組みです。initよりも高速で、
cgroupsでプロセスのリソースを管理します。

Unitとはsystemdで扱われる処理の単位です。

unitの種類が載ってました。

特に 〜.target〜.serviceがよく使われます。

ターゲット複数のUnitをまとめたものです。

よく使われるターゲットは下の3つみたいです。

runlevel3.targetはほとんどのプロセスが動作します。

multi-user.target はCUIログインをします。

graphical.target  はグラフィカルなログインをします。

ターゲット管理

現在のデフォルト設定を調べる

$ systemctl get-default ターゲット名

デフォルトターゲット変更

# systemctl set-default ターゲット名

ターゲットを実行

$ systemctl isolate ターゲット名

この辺の記事も参考にしてみてください。

資料

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0