ファイル・ディレクトリ操作
pwd
print working directory の略。
現在いるディレクトリの絶対パスを表示する。
(Windows: 引数なしでcd)
cd ディレクトリ名
change directory の略。
パス(絶対パス/相対パス)を指定してディレクトリに移動する。
移動後はpwdとlsで現在地と中身を確認するように。
| 引数 | |
|---|---|
/ |
root ディレクトリ |
~ |
ホームディレクトリ(/home/ユーザ名と同じ) |
.. |
親ディレクトリ |
- |
直前までいたディレクトリに戻る(UNIX系のみ) |
ls [オプション] ディレクトリ名
ディレクトリ内のファイル・ディレクトリを一覧表示する。
ディレクトリ指定なしなら現在のディレクトリ内。
(Windows: dir)
-a:隠しファイルも表示
-l:詳細情報も表示 -lhでファイルサイズに単位も表示
-F:ディレクトリ / 、実行可能ファイル*、シンボリックリンク@等の属性をつけて表示
-C:列形式で表示
-ltr:逆順ソート
多くのディストリビューションで以下のエイリアス(ショートカットのようなもの)が設定されている。aliasコマンドでエイリアスの一覧を表示できる。
alias ll='ls -l'
mkdir [オプション] ディレクトリ名
現在のディレクトリ内に新ディレクトリを作成する。
複数名を渡して複数同時に作成することも可能。
-p:必要な親ディレクトリも含めて作成
-m:作成するディレクトリに適用するパーミッションを指定
mkdir -m 755 mydir など
mkdir -p parent/child/grandchild
-pなしなら parent/childというディレクトリが存在する場合にその下に作られる。
rmdir [オプション] 空のディレクトリ名
空ディレクトリを削除する。
mv [オプション] 古いパス 新しいパス
ファイル・ディレクトリの移動 / 名前変更
名前の変更も移動(move)の一種(両方ともパスの変更)。
【引数による挙動の違い】
- 1個目がファイルで、2個目が既存のディレクトリ
→ そのディレクトリ内に移動 - 1個目がディレクトリで、2個目が既存のディレクトリ
→ 前者を後者の中に移動 - 1個目がファイルまたはディレクトリで、2個目が存在しない名前
→ 後者の名前に変更(拡張子も消えるので注意)
-v:処理内容を詳細に表示
-n:上書きを防ぐ
rm [オプション] ファイル名
ファイル・ディレクトリを削除する。
この削除は復元不可なので注意!
-r:ディレクトリを再帰的に削除(中身も全部)
-i:削除前に確認を求める(y/nで答える)
-f:強制削除(確認を求めずに削除)
-v:削除されたファイルを詳細表示
# ディレクトリ全体を強制削除
sudo rm -rf dir1
cp [オプション] コピー元 コピー先
ファイル・ディレクトリを複製する。
コピー先に既存ディレクトリを指定するとその中に同名ファイルとしてコピーされる。
cp ファイル名 既存ディレクトリ/新しいファイル名 なども可。
-r:コピー元がディレクトリだった場合、そのディレクトリ以下の階層構造を含めてコピー
-p:パーミッション、所有者などの属性を可能な限りそのまま維持してコピー(管理者権限が必要な場合があるため、コピー先の環境によっては完全に引き継げない)
-v:コピーの進行状況を画面に表示する
find 検索開始ディレクトリ [検索条件] [アクション]
指定したディレクトリ以下でファイルやディレクトリを検索する。
-name:ファイル名指定で検索 -inameなら大文字小文字区別なし
-type:後ろに f (ファイル)か d (ディレクトリ) をつけて種類指定
テキスト操作
cat ファイル名
ファイル内容全体を一括で表示する。
ls -lでファイルサイズを確認し、小さければcatで表示し、大きければlessで開くとよい。
-n:行番号を付けて表示
less ファイル名
ファイルをページごとに開く。
【ページ内操作】
space でページを進みbで戻る
↑ ↓:1行毎のスクロール
q:終了
行数 + G:指定行に飛ぶ
Shift + G:ファイル末尾に移動
/検索語 + Enter :検索
n / shift + n で 次 / 前 の検索結果に移動
長いコマンド出力を閲覧する際に組み合わせても便利。
ls -l | less
tail ファイル名
ファイルの最後尾を表示する。
ログファイルなど、リアルタイムで追いかけたいファイルに-fと共に使用する。
-f:ファイルに新しい行が追加されるたびに、それをリアルタイムで表示
-F:-fの機能に加え、ファイルがローテーションされても追跡を継続
-n 行数:表示する行数を指定
引数にファイルを複数指定することもできる。
tail -n 30 -f file1.txt file2.txt
grep [オプション] "検索パターン" ファイル名
global regular expression print の略。
検索パターンに渡した文字列(または基本正規表現)に一致する行を検索して表示する。
-i:大文字小文字を区別せずに検索
-r:第二引数にディレクトリを指定し、その内のファイルを再帰的に検索
-n:行番号も表示
-E:拡張正規表現による検索を可能にする(egrepと同等)
vi ファイル名
指定ファイルをviエディタで編集する。
ユーザ・権限関連
su
switch user の略。
引数で指定したユーザに切り替える。
ユーザ名の指定に-を付けると、そのユーザでログインしたときと同じ環境変数・シェル設定が読み込まれる。
例)sudo su - ec2-user
whoami
現在のユーザ名を表示する。
sudo [コマンド]
別のユーザとして引数に渡したコマンドを実行する。
通常は一時的に管理者権限を借りるために使う。
ネットワーク関連
curl [オプション] [URL]
Client URL の略。
サーバへのHTTPリクエストを送信して、ウェブページやAPIデータを取得する。
-X(--request):HTTPメソッドを指定
-H (--header):カスタムヘッダを追加
-d (--data):POSTデータ(リクエストボディ)を送信
例)
curl -X POST "https://example.com/api/login" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_TOKEN_HERE" \
-d '{"username": "testuser", "password": "mypassword"}'
サービス管理
systemctl
サービス(デーモン)の起動、停止、再起動、状態確認などを行う。
古いものはserviceコマンドが使われていたりするが、現在はこちらの方を推奨のよう。
enableにしたサービスはサーバ起動時に自動で起動する。
status, list-unitsなどの読み取り系はsudoなしで使えることが多い。
# 起動
sudo systemctl start サービス名
# 停止
sudo systemctl stop サービス名
# 再起動
sudo systemctl restart サービス名
# 状態確認
systemctl status サービス名
# 自動起動の有効化
sudo systemctl enable サービス名
# 自動起動の無効化
sudo systemctl disable サービス名
# ロードされているサービス一覧取得
systemctl list-units --type=service
ハードウェア・プロセス関連
free
メモリやスワップ領域の使用状況を表示する。
-h:単位付きで表示
| 見出し | |
|---|---|
| total | 合計のメモリサイズ |
| used | 使用中のメモリ |
| free | 利用可能なメモリ |
| shared | 共有メモリ |
| buffers/cache | バッファやキャッシュに使用されているメモリ |
df
disk free の略。
ディスクの使用状況を表示する。
-h:単位付きで表示
| 見出し | |
|---|---|
| Filesystem | ファイルシステム(デバイスや仮想領域)の種類 |
| Size | ファイルシステム全体のサイズ |
| Used | 使用済み容量 |
| Avail | ユーザが利用可能な容量 |
| Use% | 使用率(Used / Size) |
| Mounted on | ファイルシステムがマウントされているディレクトリ |
Linux では一部(5%程度)の空き容量をroot専用に保持していることがあるため、Size - Used と Avail が完全には一致しない場合がある。
sar [間隔 回数]
CPU使用率などのシステム稼働状況を一定時間ごとに測定し表示する。
間隔:測定間隔(秒)
回数:測定回数
例)sar 1 20 ⇒ 1秒おきに20回測定する
| 見出し | |
|---|---|
| %user | ユーザモードでCPUが使用された時間の割合。一般的なアプリケーションプログラムの実行に使われた時間。 |
| %nice |
nice 値(優先度)が設定された(=優先度を下げられた)プロセスがユーザモードで使用したCPU時間の割合。バックグラウンドジョブなど、低優先度で実行されるプロセスの時間。 |
| %system | システムモード(カーネルモード)でCPUが使用された時間の割合。システムコールの処理、割り込み処理、カーネルの処理に使われた時間。 |
| %iowait | CPUが I/O(ディスクやネットワーク)処理の完了待ちでアイドル状態になっていた割合。 |
| %steal | 仮想環境において、他の仮想マシンにCPUを奪われて待たされた時間の割合。物理サーバでは通常 0。 |
| %idle | CPUが完全にアイドル状態(何も処理していない)だった時間の割合。 |
%idle が高い → CPU に余裕がある
%user が高い → アプリケーションの処理負荷が大きい
%system が高い → OS 内部処理が重い(ドライバやシステムコール多用)
%iowait が高い → CPU よりもディスクI/O待ちがボトルネックになっている
%steal が高い → 仮想環境でリソース不足
ユーザモード:
直接ハードウェアにアクセスできず、メモリも一部領域にしかアクセスできないなど、制限された実行環境で動作するモード。一般的なアプリケーションプログラムが実行される。
システムモード:
ハードウェアに直接アクセス可能・全メモリ領域にアクセス可能など、制限のない実行環境で動作するモード。OS(カーネル)が実行される。
システムコール:
ユーザモードのプログラムがシステムモードの機能を利用するための仕組み。
ユーザモードのプログラムは直接ハードウェアにアクセスできないため、ファイル操作やネットワーク通信など特権が必要な処理をするときはシステムコールを通じてOS(カーネル)に処理を依頼する。
top
プロセス状況・システムリソース使用率をリアルタイムで表示する。
Windows タスクマネージャーの CUI版という感じ。
CPU使用率順やメモリ使用量で表示するとわかりやすい。
【キー操作】
q:終了
k:プロセスを終了(PIDを指定)
r:プロセスの優先度を変更
Shift + M:メモリ使用量でソート
Shift + P:CPU使用率でソート
Shift + T:実行時間でソート
u:特定ユーザのプロセスのみ表示
1:CPUコアごとの情報を切り替え
h:ヘルプ表示
| 見出し | |
|---|---|
| PID | プロセスID |
| USER | 実行ユーザ |
| PR | プロセス優先度(priority) |
| NI | nice値(ユーザが調整できる優先度) |
| VIRT | 仮想メモリ使用量 |
| RES | 実メモリ使用量(Resident) |
| SHR | 共有メモリ量 |
| S | 状態(S=スリープ, R=実行中, Z=ゾンビなど) |
| %CPU | CPU使用率 |
| %MEM | メモリ使用率 |
| TIME+ | 累積実行時間 |
| COMMAND | プロセスを起動したコマンド名 |
crontab [オプション] [ファイル名]
cron table の略。
指定したファイルの処理を、特定の時間に自動で実行する。
バックアップを取ったり、溜まったゴミファイルを消すプログラムなど、定期的に実行したいものに使う。
基本的には-lで設定を確認することが多い。
-e:crontabファイルを編集
-l:crontabファイルの中身を表示
【表示形式】
10 8,14,19 * * * /hoge/huga.exe
左から順番に「分、時、日、月、曜日」の指定。
*はワイルドカード(全て)。
上の例は、毎日 8:10、14:10、19:10 に/hoge/huga.exeを実行する、というプログラム。