はじめに
Linuxでは、ファイルの削除、権限変更、プロセス停止、ディスク操作など、OSを直接操作する強力なコマンドが用意されています。
便利な反面、コマンドや対象を間違えると、
- 必要なファイルを削除する
- アプリケーションが起動しなくなる
- サーバーを停止してしまう
- ディスク内のデータを失う
といった事故につながる可能性があります。
特に本番サーバーでは、一つのコマンドがサービス全体に影響することもあります。
この記事では、Linuxで特に慎重に扱いたいコマンドと、安全に操作するためのポイントを紹介します。
注意
この記事に登場するコマンドには、データ消失やシステム障害につながるものがあります。
意味を理解せず、実環境や本番環境で試さないでください。
1. rm -rf(ファイル・ディレクトリの強制削除)
Linuxで特に注意したいコマンドの一つがrmです。
rmはファイルを削除するコマンドです。
例えば、
rm sample.txt
とすると、sample.txtを削除します。
特に注意が必要なのが、
rm -rf <directory>
という使い方です。
-rとは?
-rは**recursive(再帰的)**という意味です。
ディレクトリだけではなく、その中にあるファイルやサブディレクトリまで削除します。
-fとは?
-fは**force(強制)**という意味です。
確認を省略して削除を進めます。
つまり、
rm
↓
削除
-r
↓
ディレクトリの中まで削除
-f
↓
確認せず強制的に削除
となります。
パスを間違えると、大量のファイルを削除する可能性があるため注意が必要です。
削除前に確認する
いきなり削除するのではなく、
pwd
で現在位置を確認したり、
ls
で対象を確認したりする習慣を付けると安全です。
例えば、
ls <directory>
で中身を確認してから削除します。
SQLでいう、
DELETE FROM users
WHERE id = 10;
を実行する前に、
SELECT *
FROM users
WHERE id = 10;
で対象を確認する考え方に近いです。
2. chmod -R(権限の一括変更)
chmodはファイルやディレクトリのアクセス権限を変更するコマンドです。
例えば、
chmod 755 script.sh
のように使用します。
chmod自体はLinuxでは非常によく使われるコマンドですが、
chmod -R <権限> <directory>
のように-Rを付ける場合は注意が必要です。
-Rを指定すると、対象ディレクトリ以下のファイルやディレクトリにも再帰的に権限変更が適用されます。
そのため対象を間違えると、多数のファイルの権限が意図せず変更される可能性があります。
結果として、
アプリケーションがファイルを読めない
↓
サービスが正常に動かない
といった問題につながることがあります。
3. chown -R(所有者の一括変更)
chownは、ファイルやディレクトリの所有者を変更するコマンドです。
chown user:group <file>
のように使用します。
こちらも、
chown -R user:group <directory>
とすると、ディレクトリ以下の所有者をまとめて変更できます。
便利ですが、対象ディレクトリを間違えると、本来別のユーザーが所有するべきファイルまで変更してしまう可能性があります。
Linuxでは、
- 誰が所有しているか
- 誰が読み込めるか
- 誰が書き込めるか
- 誰が実行できるか
といった情報が重要です。
そのため、chmodとchownはセットで慎重に扱う必要があります。
4. kill -9(プロセスの強制終了)
Linuxでは、
kill <PID>
を使ってプロセスに終了シグナルを送ることができます。
特に、
kill -9 <PID>
は強制的にプロセスを終了させる非常に強力な操作です。
-9はSIGKILLを意味します。
通常の終了処理を行う余地を与えず、OS側からプロセスを終了させます。
そのため、
プロセスが終了しない
↓
とりあえず kill -9
と安易に使うのは避けた方が安全です。
重要なプロセスを停止すると、サービス障害につながる可能性もあります。
まず対象のPIDを確認し、
ps
や
ps aux
などで、終了させようとしているプロセスが本当に正しいか確認することが重要です。
5. shutdown / reboot(OSの停止・再起動)
shutdownはOSを停止するためのコマンドです。
rebootはOSを再起動します。
開発用の自分のPCであれば大きな問題にならない場合もありますが、本番サーバーでは話が変わります。
例えばWebサービスを提供しているサーバーを不用意に再起動すると、
reboot
↓
サーバー停止
↓
アプリケーション停止
↓
ユーザーがサービスを利用できない
となる可能性があります。
サーバー環境では、
「再起動すれば直りそうだから、とりあえずreboot」
という操作は避け、影響範囲を確認することが重要です。
6. dd(ディスクへの低レベルなコピー)
ddはデータを低レベルにコピーできる強力なコマンドです。
バックアップやディスクイメージの作成などにも利用できます。
一方で、出力先の指定を間違えるとディスクのデータを上書きしてしまう可能性があります。
特にddでは、
- 入力元
- 出力先
- 対象デバイス
を正しく理解している必要があります。
ファイル操作というよりもディスクそのものを操作できるコマンドなので、意味を理解せず実行するのは避けるべきです。
7. mkfs(ファイルシステムの作成)
mkfsは、ストレージデバイスにファイルシステムを作成するためのコマンドです。
簡単に言えば、
「このディスクをLinuxで使える形式にする」
ための操作です。
しかし、既にデータが存在するデバイスを誤って対象にすると、データを失う危険があります。
そのためmkfsを使用する場合は、
lsblk
などで対象デバイスを確認することが非常に重要です。
8. fdisk / parted(パーティション操作)
fdiskやpartedは、ディスクのパーティションを操作するためのツールです。
例えば、
Disk
├── Partition 1
├── Partition 2
└── Partition 3
のようなディスク構成を変更できます。
ディスク構成そのものを変更するため、操作を間違えるとOSが正常に起動できなくなったり、データへアクセスできなくなったりする可能性があります。
通常のアプリケーション開発で頻繁に使用するものではありませんが、
「ディスク構成を直接変更する強力なツール」
ということは知っておくとよいでしょう。
9. curl ... | sh(取得したスクリプトをそのまま実行)
Linuxのインストール手順などで、
curl <URL> | sh
という形式を見ることがあります。
これは、
curl
↓
インターネットからデータを取得
|
↓
取得した内容を次のコマンドへ渡す
sh
↓
シェルスクリプトとして実行
という処理です。
つまり、
インターネットから取得したプログラムをそのまま実行している
ということです。
提供元が信頼できることを確認せず実行するのは危険です。
可能であれば、一度スクリプトの内容を確認してから実行する方が安全です。
10. sudo(管理者権限での実行)
sudoそのものは危険なコマンドではありません。
Linuxを管理するうえでは必要不可欠です。
しかし、
sudo <command>
とすると、通常のユーザーでは実行できない操作を高い権限で実行できる場合があります。
そのため、
危険な操作
+
sudo
=
より大きな範囲に影響する可能性
と考えると分かりやすいです。
例えば、
sudo rm ...
を見た場合、
「管理者権限で削除処理を実行しようとしている」
と認識できることが重要です。
Linuxコマンドで事故を防ぐためのポイント
危険なコマンドをすべて暗記するよりも、事故を防ぐ習慣を身につける方が重要です。
1. 現在位置を確認する
pwd
2. 操作対象を確認する
ls
ls -la
3. プロセスを停止する前にPIDを確認する
ps aux
4. ディスク操作前にデバイスを確認する
lsblk
5. sudoが付いていたら一度コマンドの意味を確認する
知らないコマンドに対して、
sudo <知らないコマンド>
をそのまま実行するのは避けます。
特にWebサイトや生成AIなどからコピーしたコマンドについては、
「何をしているコマンドなのか」
を理解してから実行することが重要です。
危険度まとめ
| コマンド | 主な用途 | 注意するポイント |
|---|---|---|
rm -rf |
ファイル・ディレクトリ削除 | パスを間違えると大量削除 |
chmod -R |
権限変更 | 大量のファイル権限を変更できる |
chown -R |
所有者変更 | 所有者設定を広範囲に変更できる |
kill -9 |
プロセス強制終了 | 重要プロセスを停止する可能性 |
shutdown |
OS停止 | サーバー停止につながる |
reboot |
OS再起動 | サービス停止につながる |
dd |
ディスクコピー | 出力先を間違えるとデータを上書き |
mkfs |
ファイルシステム作成 | 対象デバイスのデータ消失に注意 |
fdisk / parted
|
パーティション操作 | ディスク構成を壊す可能性 |
curl ... | sh |
スクリプト取得・実行 | 信頼できないコードを実行する危険 |
sudo |
高い権限で実行 | 他の危険な操作の影響範囲が大きくなる |
まとめ
Linuxには非常に強力なコマンドが多数用意されています。
重要なのは、
「危険だから使わない」ではなく、「何が起こるのか理解してから使う」
ことです。
特に、
rm -rf
chmod -R
chown -R
kill -9
dd
mkfs
sudo
などを見たときに、
「これは影響範囲を確認してから実行した方がいいコマンドだ」
と判断できるだけでも事故を防ぎやすくなります。
SQLでDELETEやUPDATEを実行する前にWHERE句や対象データを確認するのと同じように、Linuxでも、
「実行前に対象を確認する」
という習慣が重要です。
Linuxコマンドは強力ですが、仕組みを理解して慎重に扱えば、サーバー開発や運用において非常に便利な道具になります。