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を生成する。 |
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
はどんなコマンドなのか表示します。
ディレクトリの構造
ディレクトリは木みたいな構造になっています。
この記事に細かいディレクトリの説明があります。
プロセス
プロセスとは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 ターゲット名
この辺の記事も参考にしてみてください。
資料