ファイルシステムの種類と特徴をまとめてみた
LinuC101試験の個人的な難関であるハードウェア・ディスク・ファイルシステムなどの分野の中でも 特に覚えるのがめんどくさいファイルシステムの種類を表にまとめました。
Linuxのファイルシステム
ファイルシステム | 説明 | ジャーナリングファイルシステム | 動的inode |
---|---|---|---|
ext2 | 以前のLinuxで使用されていた規格 | × | × |
ext3 | ext2の後続 | ◯ | × |
ext4 | ext3の後続(最大ファイルシステムサイズの制約などを改良) Debian10の既定 |
◯ | × |
XFS | シリコングラフィクス社が開発 CentOS 7の既定 |
◯ | ◯ |
JFS | IBMが開発 |
◯ | ◯ |
Btrfs | スナップショット機能 複数デバイスを扱う機能 |
◯ | ◯ |
その他のファイルシステム
ファイルシステム | 説明 |
---|---|
VFAT(Virtual File Allocation Table) | Windowsで使われているファイルシステム。Linux環境でも使える。 Linux標準パーティションなど使えないファイル属性もある。 |
NTFS | Windowsで使われているファイルシステム。Linux環境では読み取り専用。 |
ISO9660 | CDやDVD上に作るファイルシステム |
tmpfs | メモリ上に作られるファイルシステム |
用語
ジャーナリング機能・・・更新履歴をジャーナル(ログ)に記録しておく機能。
動的inode・・・ファイル作成時にinode番号を動的に割り当てる機能のこと。inodeを動的に割り当てるため、inodeの数に制限はない。
findコマンドまとめ
はじめに
LinuC101試験でどうしてもコマンドとオプションが覚えれなかったので
findコマンドのオプションを暗記するために語源を含めてまとめました
オプション名の語源については諸説あるので注意! 覚え方の参考程度に考えて欲しいです
オプションの意味は1次情報をみるのが確実です。
findコマンド
コマンド概要
ファイルやディレクトリを検索する。
コマンド名由来
find そのまま
書式
find [検索ディレクトリ] [ option ] [条件式] [アクション]
オプション
オプション | 説明 |
---|---|
-maxdepth |
検索するサブディレクトリの階層数を指定 |
-mindepth |
指定したサブディレクトリより深い位置を検索する |
条件式
条件式 | 説明 |
---|---|
-name |
ファイルやディレクトリ名の一部のみ指定した検索。 |
-mtime |
更新日時で検索 |
-atime |
任意の日数にアクセスされたファイルやディレクトリを検索する。 |
-user |
所有者名で検索 |
-perm |
現在,実行しているプロセスを表示 |
-type |
実行しているコマンド名と環境変数を表示する。 |
アクション
アクション | 説明 |
---|---|
-print |
検索結果を改行で区切って表示 |
print0 |
検索結果をNULL文字(\0)で区切って表示 |
-exec [コマンド] {引数} \; |
見つけたファイルに対してコマンドを実行 |
-type |
killコマンドとシグナルのまとめ
はじめに
killコマンドの概要とkillコマンドで送信できるシグナルについてまとめます。
シグナルとはプロセスに送信するメッセージのことを意味します。
killコマンド
コマンド概要
実行中のプロセスの情報を表示
書式
kill [ option ] PID/%ジョブ番号
オプション
オプション | 語源(おぼえかた) | 説明 |
---|---|---|
-s シグナル名/シグナル番号 |
Signal | プロセスにシグナルを送信 |
- シグナル名/シグナル番号 |
なし | プロセスにシグナルを送信 |
-l |
List | シグナルの一覧を表示 |
シグナル一覧
シグナル番号 | シグナル名/語源 | 説明 |
---|---|---|
1 | HUP (Hung UP ) | プロセスを再起動するシグナル。 設定ファイルの再読み込みをさせる場合に使う事が多い |
2 | INT (INTerrupt) | キーボードからの割り込み。(Ctrl+C) |
9 | KILL | 強制終了。正常な処理を行わないため、ファイル破損も起こりうる。最終手段にしよう。 |
15 | TERM (termination) | 規定。終了シグナル。正常な終了処理を行わせる。 |
18 | CONT (CONTinue) | 一時停止のプロセスを再開 |
19 | STOP (STOP) | 一時停止 |
20 | TSTP ( Terminal SToP ) | サスペンド。(Ctrl+Z) |
おわりに
LinuC101の試験範囲なのでシグナル番号と意味を紐付けて暗記する必要があります。
だり〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜^^^
psコマンドのオプションと覚え方
はじめに
LinuC101試験でどうしてもコマンドとオプションが覚えれなかったので
PSコマンドのオプションを暗記するために語源を含めてまとめました
オプション名の語源については諸説あるので注意!
覚え方の参考程度に考えて欲しいです
オプションの意味は1次情報をみるのが確実です。
PSコマンド
コマンド概要
実行中のプロセスの情報を表示
コマンド名由来
おそらく、ProcceSsから
書式
ps [ option ]
オプション
BSD形式とUnix形式で異なるオプションを用いる。ハイフンの有無に注意
BSD形式
オプション | 語源(おぼえかた) | 説明 |
---|---|---|
a |
All | ユーザが実行した全てのプロセスを表示 |
f |
Family, Forest | 親子関係も表示 |
l |
Long-info, List | 詳細情報を表示 |
x |
eXtra | 制御端末のないサービスが実行したプロセスを表示 |
r |
Right-now | 現在,実行しているプロセスを表示 |
e |
Enviroment | 実行しているコマンド名と環境変数を表示する。 |
u |
Use, cpU | CPUやメモリ使用率も追加で表示 |
h ,--no-header |
no Header | 項目名を表示しない |
c |
Command | 実行中のコマンド名を表示する |
Unix形式
オプション | 語源(おぼえかた) | 説明 |
---|---|---|
-e |
Every | 全てのプロセスを表示 |
-f |
Full | 起動時間(STIME)などを含めた詳細情報を表示 |
-l |
Long | 詳細情報を表示 |
その他実行例など
ps -f
とps -l
の違い
> ps -f UID PID PPID C STIME TTY TIME CMD
> ps -l UID PID PPID F CPU PRI NI SZ RSS WCHAN S ADDR TTY TIME CMD
LinuC101試験ではSTIMEがあるかどうかだけわかればよさそう
ps -ax
=ps -e
どちらもすべてのプロセスを表示する
- よくつかう
ps -aux
すべてのプロセスのCPU使用率がわかります
LinuC勉強用のCentOS環境をDockerで作った
最近,会社の先輩におすすめされてLinuCの勉強を始めました
とりあえず公式公認の教科書を買って
載っているコマンドを実際に使って覚えていくことにしました
ただ、普段使いしているのはMacOSなので試験範囲で使えないコマンドもあるし、
環境をいじるのも嫌だったのでDockerコンテナで勉強用の環境を作ることにしました
手順
Dockerfile
FROM centos:latest ARG USER ARG PASSWD # ユーザーを追加してパスワードを設定 RUN yum -y update && yum clean all && \ yum -y install sudo && \ yum -y install which && \ useradd -m $USER && \ echo "$USER:$PASSWD" | chpasswd && \ echo "$USER ALL=(ALL) ALL" >> /etc/sudoers # 日本語化設定 RUN yum -y reinstall glibc-common RUN yum -y install glibc-langpack-en glibc-locale-source RUN localedef -f UTF-8 -i ja_JP ja_JP.UTF-8 RUN echo 'LANG="ja_JP.UTF-8"' > /etc/locale.conf ENV LANG="ja_JP.UTF-8" \ LANGUAGE="ja_JP:ja" \ LC_ALL="ja_JP.UTF-8"
上が使用したDockerfileです
rootユーザーだけだと不便なのでユーザーを追加してパスワードを設定しています
また、日本語化も行っています
使い方の手順
buildします。--build-argで変数をわたせるらしい
> docker build -t mycentos_ja:latest . --build-arg USER=[user name] --build-arg PASSWD=[password]
起動
> docker run -d mycentos_ja:latest /sbin/init
ユーザー指定でシェル実行。コンテナに入ります
> docker exec -it [container ID] su - [user name]
日本語化の確認をします
[morito@4483559028a3 ~]$ locale # locale確認 LANG=ja_JP.UTF-8 LC_CTYPE="ja_JP.UTF-8" LC_NUMERIC="ja_JP.UTF-8" LC_TIME="ja_JP.UTF-8" LC_COLLATE="ja_JP.UTF-8" LC_MONETARY="ja_JP.UTF-8" LC_MESSAGES="ja_JP.UTF-8" LC_PAPER="ja_JP.UTF-8" LC_NAME="ja_JP.UTF-8" LC_ADDRESS="ja_JP.UTF-8" LC_TELEPHONE="ja_JP.UTF-8" LC_MEASUREMENT="ja_JP.UTF-8" LC_IDENTIFICATION="ja_JP.UTF-8" LC_ALL= [morito@4483559028a3 ~]$ date 2021年 3月 30日 火曜日 03:35:06 UTC # 日本語になってる
sudoを確認します
[morito@4483559028a3 ~]$ sudo visudo
一番下にmorito ALL=(ALL) ALL
という記述が確認できました
さいごに
locale周りは全然よくわかってないです
余計なlocaleを削除してDockerの容量を減らしたりできるらしいけど
よくわからん。今度暇な時に調べようと思います。
参考
LinuC頻出のUnixコマンド 【備忘録】
最近暇な時間にモンハンライズLinuCの勉強をしているので
頻出っぽいコマンドの使い方を備忘録として残しておきます
history
コマンドの実行履歴を表示する
書式
history [option] [履歴数]
表示する履歴の数を指定できる
例
[morito@766e24c919d0 ~]$ history 5 3 vi test1.txt 4 echo $EDITER 5 echo $EDITOR 6 history 7 history 5
また、!履歴番号
とすることで指定した履歴番号のコマンドを実行できる。
[morito@766e24c919d0 ~]$ history 10 19 od -t c test3.txt 20 tr [:lower:] [:upper:] < test3.txt] 21 tr [:lower:] [:upper:] < test3.txt 22 grep bash /etc/passwd | tee test4.txt 23 cat test4.txt 24 ls 25 cat test4.txt 26 cat test2.txt 27 sed 's/unko/hage/g' test2.txt 28 history 10 [morito@766e24c919d0 ~]$ !25 cat test4.txt root:x:0:0:root:/root:/bin/bash morito:x:1000:1000::/home/morito:/bin/bash
man
書式
man [option] [マニュアルのセクション] [キーワード]
キーワードでは表示するマニュアルのコマンド名を指定する.
オプションに-k、-fをつけたときは検索するキーワードを指定する。
-f キーワードの完全一致検索を行う
-k キーワードの部分一致検索を行う
whatis
man -f と同じ
apropos
man -k と同じ
od
ファイルの内容を8進数で表示する
書式:od [option] [ファイル]
-t c
ASCIIで表示
-t x
16進数で表示
例
[morito@766e24c919d0 ~]$ cat test2.txt hello unko [morito@766e24c919d0 ~]$ od test2.txt 0000000 062550 066154 005157 067165 067553 000012 0000013
tr
文字の置換・削除。特殊文字も消せる。
書式
書式(置換):tr [option] [文字1] [文字2]
書式(削除):tr -d 文字
例
[morito@766e24c919d0 ~]$ od -t c test2.txt #ASCIIで表示 0000000 h e l l o \n u n k o \n 0000013 [morito@766e24c919d0 ~]$ tr -d '\n' < test2.txt > test3.txt #改行コードを削除し、test3.txtに書き込む [morito@766e24c919d0 ~]$ od -t c test3.txt 0000000 h e l l o u n k o 0000011
$ tr [:lower:] [:upper:] < test3.txt # 文字列クラスで指定して英小文字を英大文字に置換 HELLOUNKO
tee
標準入力の内容を標準出力とファイル両方に送る
[morito@766e24c919d0 ~]$ grep bash /etc/passwd | tee test4.txt # grepの結果をteeに渡す root:x:0:0:root:/root:/bin/bash morito:x:1000:1000::/home/morito:/bin/bash # 標準出力に出力される [morito@766e24c919d0 ~]$ cat test4.txt # ファイルにも出力される root:x:0:0:root:/root:/bin/bash morito:x:1000:1000::/home/morito:/bin/bash
sed
文字列の編集(置換、削除など)を行い表示する
書式
sed [option] 's|検索文字列 / 置換後の文字列|' ファイル
(置換)
sed [option] '|削除する文字列|d' ファイル
(削除)
[morito@766e24c919d0 ~]$ sed 's/unko/hage/g' test2.txt #gオプションを指定すると全ての文字列を対象にする hello hage
anacondaで取得したTweetが途中で切れる
環境
anacondaを使ってTwitterのいいね欄を取得したかったのですが
取ってきたツイーヒョがなぜか途中で切れてしまうので困った
コードは以下。認証のとことmain関数は省略してます。
package main import ( "fmt" "local.packages/keys" "net/url" // "unicode/utf8" ) func getFavotite() { api := keys.GetTwitterApi() v := url.Values{} v.Set("count","2") tweets, err := api.GetFavorites(v) if err != nil { panic(err) } for _, tweet := range tweets { fmt.Println(tweet.Text,"\n") } fmt.Println("get favorites!") }
とってきてShellに表示したツイート↓
# go run *.go 大嶋啓之『epitaph』 / cross fade https://t.co/i0R9osUU1B ボーカルRec&Mix&Masteringやらせていただきました。大嶋さんの12年ぶりの新作フルアルバ?
元のツイートはこれなので半分くらいしか表示できない
大嶋啓之『epitaph』 / cross fade youtu.be/Duh6ZP-kNe8 ボーカルRec&Mix&Masteringやらせていただきました。大嶋さんの12年ぶりの新作フルアルバム! kidlitさんVo&Choとの相性も抜群で、退廃的なロマンに満ちあふれています。浄化感もあってどっぷり浸れる作品。是非聴いてみてください!
原因と解決法
レスポンスであるtype Tweet
のフィールドにはFullText
なるものがあるらしい
tweet.text
は省略されたものらしい OMG
なので
- fmt.Println(tweet.Text,"\n") + fmt.Println(tweet.FullText,"\n")
こんなことに無駄に時間食ってしまった。ちゃんとドキュメントは読もう;;