IT未経験からインフラ学習2回目:Linuxで削除・検索・権限・プロセス確認を練習した
はじめに
どもっす。
インフラ/クラウドエンジニアを目指して、Linuxの基本操作を学習してます、新人1年目のエンジンです。
ガソリンはハイオク満タンで走行中。五キロで全部消し飛ぶ燃費の悪さが自慢です。
1回目は、WSL / Ubuntuの通常ユーザー設定、sudo、ファイル作成、追記、find による構造確認を行い、初心の初心を学びました。
2回目は、Linux操作の中でもよく使う以下の内容を練習しようかなって思ってやってみました。
- ファイル削除
- ディレクトリ削除
-
grepによる文字検索 -
findによるファイル検索 -
chmodによる権限変更 -
psによるプロセス確認 -
killによるプロセス終了
今回は削除コマンド
rmを使うため、必ず練習用ディレクトリ内だけで作業しました。
ちなみにこのQiitaのチートシートを練習しました。
会社で使ってる社内専用のナレッジと同じって気づいて、すんなりできましたね。
ホントに初歩の初歩からやってることなので、見直したい人とかおすすめです。
学習環境
| 項目 | 内容 |
|---|---|
| OS | Windows |
| Linux環境 | WSL / Ubuntu |
| ユーザー名 | tama |
| 作業ディレクトリ | /home/tama/infra-study/linux-day2 |
今日のゴール
今回のゴールは以下です。
ファイルを削除できる
ディレクトリを削除できる
grepで文字検索できる
findでファイル検索できる
chmodで権限を変えられる
psでプロセスを確認できる
killで練習用プロセスを止められる
1. 2回目用フォルダを作成する
まず、2回目用の練習フォルダを作成しました。
mkdir -p ~/infra-study/linux-day2
意味:
~/infra-study の中に linux-day2 というフォルダを作成します。
-p は、途中のフォルダが存在しない場合でもまとめて作成する指定です。
作成したフォルダへ移動します。
cd ~/infra-study/linux-day2
意味:
linux-day2 フォルダへ移動します。
現在地を確認します。
pwd
意味:
現在いるディレクトリを確認します。
実行結果の例:
/home/tama/infra-study/linux-day2
2. 練習用ファイルを作成する
検索や削除の練習をするため、いくつかのファイルを作成しました。
echo "apple banana orange" > fruits.txt
意味:
fruits.txt を作成し、果物の文字列を書き込みます。
> は上書き保存です。
echo "linux cloud infrastructure" > tech.txt
意味:
tech.txt を作成し、Linuxやクラウドに関する文字列を書き込みます。
echo "error: connection failed" > app.log
意味:
app.log を作成し、エラーのようなログを1行書き込みます。
echo "info: application started" >> app.log
意味:
app.log の末尾にログを追記します。
>> は追記です。
作成できたか確認します。
ls
意味:
現在のディレクトリ内のファイル一覧を表示します。
実行結果の例:
app.log fruits.txt tech.txt
3. catでファイルの中身を確認する
作成したログファイルの中身を確認しました。
cat app.log
意味:
app.log の中身を表示します。
実行結果:
error: connection failed
info: application started
cat は、短いファイルの中身を確認するときに便利です。
4. grepで文字検索する
次に、grep を使ってファイル内の文字を検索しました。
grep "error" app.log
意味:
app.log の中から error を含む行を検索します。
実行結果:
error: connection failed
grep "linux" tech.txt
意味:
tech.txt の中から linux を含む行を検索します。
実行結果:
linux cloud infrastructure
grep "banana" fruits.txt
意味:
fruits.txt の中から banana を含む行を検索します。
実行結果:
apple banana orange
grepの基本形
grep "探したい文字" ファイル名
ログ確認やエラー調査でよく使うコマンドなので、かなり重要だと感じました。
5. findでファイルを探す
次に、find を使ってファイルやディレクトリを探しました。
find ~/infra-study -name "*.txt"
意味:
~/infra-study の中から、拡張子が .txt のファイルを探します。
find ~/infra-study -name "*.log"
意味:
~/infra-study の中から、拡張子が .log のファイルを探します。
find ~/infra-study -type d
意味:
~/infra-study の中から、ディレクトリだけを探します。
-type d の d は directory の意味です。
find ~/infra-study -type f
意味:
~/infra-study の中から、ファイルだけを探します。
-type f の f は file の意味です。
findで覚えた指定
| 指定 | 意味 |
|---|---|
-name "*.txt" |
.txt で終わるファイルを探す |
-name "*.log" |
.log で終わるファイルを探す |
-type d |
ディレクトリだけを探す |
-type f |
ファイルだけを探す |
-maxdepth 3 |
最大3階層まで探す |
マジ、死ぬ気で覚えましたね。
6. ファイルをコピーして削除する
まず、tech.txt をコピーしました。
cp tech.txt tech-copy.txt
意味:
tech.txt をコピーして、tech-copy.txt を作成します。
確認します。
ls
意味:
現在のディレクトリ内のファイル一覧を表示します。
実行結果の例:
app.log fruits.txt tech-copy.txt tech.txt
次に、コピーしたファイルを削除しました。
rm tech-copy.txt
意味:
tech-copy.txt を削除します。
確認します。
ls
意味:
tech-copy.txt が削除されたか確認します。
実行結果の例:
app.log fruits.txt tech.txt
rmで削除したファイルは、基本的にゴミ箱には入りません。
そのため、削除対象をよく確認してから実行する必要があります。
7. 空のディレクトリを削除する
空のディレクトリを作成して、rmdir で削除しました。
mkdir test-dir
意味:
test-dir という空のディレクトリを作成します。
ls
意味:
test-dir が作成されたか確認します。
rmdir test-dir
意味:
空のディレクトリ test-dir を削除します。
rmdir は空のディレクトリしか削除できません。
ls
意味:
test-dir が削除されたか確認します。
8. 中身があるディレクトリを削除する
次に、中身があるディレクトリを作って削除しました。
mkdir -p logs/old
意味:
logs フォルダと、その中の old フォルダをまとめて作成します。
echo "old log file" > logs/old/old.log
意味:
logs/old/old.log というファイルを作成します。
中身を確認します。
find logs -maxdepth 3 -print
意味:
logs フォルダ内を最大3階層まで表示します。
実行結果の例:
logs
logs/old
logs/old/old.log
中身ごと削除します。
rm -r logs
意味:
logs フォルダと、その中身をまとめて削除します。
-r は recursive、つまり再帰的に削除する指定です。
確認します。
ls
意味:
logs フォルダが削除されたか確認します。
削除コマンドの違い
| コマンド | 用途 |
|---|---|
rm ファイル名 |
ファイルを削除する |
rmdir ディレクトリ名 |
空のディレクトリを削除する |
rm -r ディレクトリ名 |
中身のあるディレクトリを削除する |
rm -rは強い削除コマンドです。
慣れるまでは、必ず練習用フォルダ内だけで使うようにしましょう。
会社で使用する場合、rm -iv で使用してますね。
こっちのほうが使い勝手良いと、個人的に感じてます☆
9. ls -lで権限を確認する
ファイルの権限を確認するため、ls -l を使いました。
ls -l
意味:
ファイル一覧を詳しく表示します。
権限、所有者、サイズ、更新日時などを確認できます。
表示例:
-rw-r--r-- 1 tama tama 23 Jun 16 app.log
先頭の部分が権限です。
-rw-r--r--
ざっくり見ると、以下のような意味になります。
| 記号 | 意味 |
|---|---|
r |
read:読み取り |
w |
write:書き込み |
x |
execute:実行 |
未だに7の内訳知らんのです。
10. 実行用スクリプトを作る
次に、実行権限を確認するためのシェルスクリプトを作成しました。
echo 'echo "Hello Linux"' > hello.sh
意味:
hello.sh というファイルを作成し、その中に echo "Hello Linux" というコマンドを書き込みます。
中身を確認します。
cat hello.sh
意味:
hello.sh の中身を表示します。
実行結果:
echo "Hello Linux"
権限を確認します。
ls -l hello.sh
意味:
hello.sh の権限を確認します。
11. 実行権限なしで実行してみる
作成した hello.sh を実行してみます。
./hello.sh
意味:
現在のディレクトリにある hello.sh を実行します。
おそらく、以下のようなエラーが出ます。
Permission denied
これは、hello.sh に実行権限がないためです。
12. chmodで実行権限を付ける
chmod を使って実行権限を付けました。
chmod +x hello.sh
意味:
hello.sh に実行権限を追加します。
+x は execute、つまり実行権限を追加する指定です。
権限を確認します。
ls -l hello.sh
意味:
hello.sh に実行権限 x が付いたか確認します。
実行してみます。
./hello.sh
意味:
hello.sh を実行します。
実行結果:
Hello Linux
chmodで学んだこと
| コマンド | 意味 |
|---|---|
chmod +x ファイル名 |
実行権限を追加する |
./ファイル名 |
現在のディレクトリにあるファイルを実行する |
13. psでプロセスを確認する
次に、現在動いているプロセスを確認しました。
ps
意味:
現在のシェルで動いているプロセスを表示します。
より多くのプロセスを見るために、以下も使いました。
ps aux | head
意味:
動いているプロセス一覧を表示し、先頭部分だけ確認します。
| head は、出力の最初の数行だけ表示する指定です。
ここで、| はパイプと呼ばれます。
左側のコマンドの結果を、右側のコマンドへ渡します。
ps aux の結果
↓
head に渡す
↓
先頭だけ表示する
14. sleepで練習用プロセスを起動する
プロセス確認の練習として、sleep をバックグラウンドで起動しました。
sleep 300 &
意味:
300秒待機する sleep コマンドをバックグラウンドで起動します。
& を付けると、コマンドを裏側で実行できます。
起動したプロセスを探します。
ps aux | grep sleep
意味:
動いているプロセス一覧から sleep を含む行を検索します。
実行結果の例:
tama 12345 0.0 ... sleep 300
この 12345 のような数字がPIDです。
PIDは、Process IDの略で、プロセスを識別する番号です。
15. killで練習用プロセスを止める
起動した sleep プロセスを終了しました。
kill 12345
意味:
PIDが 12345 のプロセスを終了します。
実際には、自分の画面に表示されたPIDに置き換えて実行します。
終了できたか確認します。
ps aux | grep sleep
意味:
sleep プロセスがまだ残っているか確認します。
grep sleep自体が検索結果に表示されることがあります。
その場合、sleep 300が残っていなければ終了できています。
16. 2回目に使ったコマンドまとめ
| コマンド | 意味 |
|---|---|
mkdir -p |
ディレクトリをまとめて作成する |
cd |
ディレクトリを移動する |
pwd |
現在地を確認する |
echo |
文字を出力する |
> |
ファイルに上書きする |
>> |
ファイルに追記する |
ls |
ファイル一覧を表示する |
cat |
ファイルの中身を表示する |
grep |
ファイル内の文字を検索する |
find |
ファイルやディレクトリを検索する |
cp |
ファイルをコピーする |
rm |
ファイルを削除する |
rmdir |
空のディレクトリを削除する |
rm -r |
ディレクトリを中身ごと削除する |
ls -l |
権限などを含めて詳しく表示する |
chmod +x |
実行権限を追加する |
ps |
プロセスを確認する |
kill |
プロセスを終了する |
17. 今日の学び
2回目で学んだことは以下です。
rmは削除コマンドなので慎重に使う
rmdirは空のディレクトリだけ削除できる
中身ごと削除する場合はrm -rを使う
grepでファイル内の文字を検索できる
findでファイルやディレクトリを探せる
ls -lで権限を確認できる
chmod +xで実行権限を追加できる
./hello.sh のようにしてスクリプトを実行できる
psでプロセスを確認できる
killでプロセスを終了できる
特に印象に残ったのは、rm -r と chmod +x です。
rm -r は便利ですが、間違えると危険なので、削除対象を必ず確認してから使う必要があると感じました。あと仕事で使用したらクソ怒られそう……
また、hello.sh はファイルとして存在していても、実行権限がなければ実行できませんでした。
Linuxでは、ファイルが「存在すること」と「実行できること」は別だとわかりました。
18. 次回やること
次回は、Linux操作の続きとして以下を学習する予定です。
標準出力と標準エラー
リダイレクトの復習
パイプの追加練習
less / head / tail
ログ確認
curlによる通信確認
特に head、tail、less はログを見るときに使うので、次回以降しっかり練習したいです。
まとめ
2回目は、Linuxの基本操作として、削除・検索・権限・プロセス確認を練習しました。
今回できたことは以下です。
- 練習用ディレクトリを作成した
- 検索用ファイルやログファイルを作成した
-
grepで文字検索した -
findでファイルやディレクトリを探した -
rm、rmdir、rm -rで削除を練習した -
ls -lで権限を確認した -
chmod +xで実行権限を追加した -
psでプロセスを確認した -
killで練習用プロセスを終了した
まだ基本操作の段階ですが、Linuxでは「ファイルを探す」「ログを見る」「権限を確認する」「プロセスを見る」という操作が重要になりそうだと感じました。
次回もLinuxの基礎操作を続けていきます。
ちなみに、まとめ書いてる途中で「あれ、これうちのチャッピーにチートシートとかやらせた方が労力減るんじゃ……」となって一応精査だけやらせたらとんでもない量のミスというか、死ぬほど醜くなってたらしくて、チャッピーから「個性的で良いですね!」と嫌味を言われました。ぐすん。