2022/06/30
WEBの開発を行っていると、SSHターミナルソフトを使ってLinuxコマンドで操作することがよくあります。
ただ、プログラミングは慣れているけど、Linuxなどのサーバー周りは苦手という人が結構多かったりします。
今回はLaravelプログラマーがよく使うLinuxコマンドをまとめてみました。
Index
- 基本コマンド(sudo・exit・shutdown・reboot・pwd・cd・ls・mkdir・rm・touch・cp・mv・chmod・chown・ln・grep)
- ファイルを閲覧する(cat・cat & grep・less・vi・tail)
- パッケージの管理(yum・apt-get)
- WEBからファイルをダウンロード(wget・curl)
- バージョンの確認(OS・PHP・MySQL)
- アプリケーションの起動(Apache・MySQL)
- curl(カール)コマンド
- 圧縮したアーカイブの作成と解凍・展開(tarコマンド)
- リダイレクションとパイプ(>>・>・|)
- キーペア [ 秘密鍵と共通鍵 ] 作成(ssh-keygen)
- コマンドの履歴を見る(history)
- PHPを実行
- コマンドのフルパスを表示(which)
- ローカル/リモート間のコピー(scp)
- 不正アクセス確認(lastb)
- SSHでログイン(ssh)
- 公開鍵をリモートサーバーに登録(ssh-copy-id)
- サービスの起動や停止、状態確認(systemctl)
- ファイアウォールの設定(firewall-cmd)
- ドキュメントルート所有者・権限変更(chown・chmod)
- 秘密鍵を一時的に保持(ssh-agent)
- Apacheのログ(生ログ)の確認方法
- php.ini のパスの確認方法
- Linuxのユーザ追加(useradd)
- システムのタイムゾーンを設定(timedatectl)
基本コマンド
sudo
コマンド、exit
コマンド、shutdown
コマンド、reboot
コマンド、pwd
コマンド、cd
コマンド、ls
コマンド、mkdir
コマンド、rm
コマンド、touch
コマンド、cp
コマンド、mv
コマンド、chmod
コマンド、chown
コマンド、ln
コマンド、grep
コマンド
sudo コマンド
sudoコマンドは、他のユーザーとしてコマンドを実行するコマンドです。よくroot(スーパーユーザー)にスイッチするときに使います。
exitコマンド
ログアウトします。
shutdownコマンド
システムを安全に終了させるためのコマンド。
rebootコマンド
再起動コマンド
cdコマンド
他のディレクトリに移動する時に使います。
絶対パスで指定すると、自分がどのディレクトリにいても必ず移動できます。
なお、相対パスでの移動も可能。相対パスで指定する場合は、現在のディレクトリを起点に移動します。
~(チルダ)
~ は特殊な文字列で自分のホームに戻ります。
lsコマンド
現在のディレクトリに存在するディレクトリやファイルを表示します。
mkdirコマンド
ディレクトリを作成します。
rmコマンド
ファイルやディレクトリを削除する時に使用します。
ファイルを削除したい場合
ディレクトリを削除したい場合
ディレクトリ内部の削除確認メッセージを飛ばす場合
touchコマンド
空のファイルを新規に作成します。
既存ファイル名を指定すると、ファイルの更新日時が現在の時刻に変わります。
cpコマンド
ファイルをコピーする時に使います。
mvコマンド
ファイルを移動させます。
リネームする際にも使用します。
例)file.txt を file_tmp.txt にリネーム
正規表現も使えます。
例)「file*.txt」(※"file" とつくテキストファイル)を「dir1」へ移動
chmod コマンド
Linux は Windows よりもファイルやディレクトリの権限が厳しいかったりします。なので、何も考えずにファイルを作成すると見れない場合があります。その際に chmod で権限を与えます。
アクセス権 | 8進数 |
---|---|
rwx | 7 |
rw- | 6 |
r-x | 5 |
r-- | 4 |
-wx | 3 |
-w- | 2 |
--x | 1 |
--- | 0 |
パーミッションの確認
現在のパーミッションは -l
オプションをつけた ls コマンドで見ることができます。
ディレクトリ以下のファイルも全部変更
ディレクトリごとファイルの権限をまとめて変更するときには -R
というオプションをつけます。
chown コマンド
指定したファイルやディレクトリのユーザー所有権(所有者)やグループ所有権(グループ)を変更します。
ln コマンド
シンボリックリンクを張るときに使います。そこに存在しないファイルを、存在するように見せたりするコマンドです。デプロイ周りで使われることが多いです。
grep コマンド
grepコマンドは前の処理結果の中で、指定した値を含む処理結果のみを表示する絞り込みコマンド。
ファイルを閲覧する(cat・cat & grep・less・vi・tail)
cat
コマンド、cat
コマンド&grep
コマンド、less
コマンド、vi
コマンド、tail
コマンド
catコマンド
ファイルの内容を全て表示することができます。
ファイルを作成
catコマンド&grepコマンド
catコマンドはパイプ「|」を使ってgrepコマンドと組み合わせて使うことができます。
less コマンド
テキストファイルの中身をターミナル上でスクロールしながら閲覧できるコマンドです。
ファイルを閲覧する場合は通常こちらのコマンドを使います。
ログファイルの閲覧もこのコマンドを使います。
無条件で指定するべきオプション
オプション | 説明 |
---|---|
-N | 行番号が左につきます。かなり見やすくなるのでおススメです。 |
-M | 現在の行や行数に対するパーセントが表示されます。現在位置が把握しやすくなります。左下に表示されます。 |
-i | 検索時に全部小文字で入力したときだけ、大文字・小文字を無視して検索します。 |
コマンドをまとめると、以下になります。
less起動中に使うコマンド
オプション | 説明 |
---|---|
q | lessコマンドを終了 |
SPACE | 1画面分下にスクロール |
b | 1画面分上にスクロール |
j | 次の行 |
k | 前の行 |
gg | 先頭に飛ぶ |
G | 末尾に飛ぶ |
/{ 検索文字列 } | { 検索文字列 }を検索します。(n で次へ、N で前へ)検索ヒットした箇所は反転します。 |
リアルタイムに更新されるデータを見る
less 起動中に shift + f
ctrl + c でキャンセルします。
tail
コマンドと違って、キャンセルしてまたless内で検索かけたり、ログを遡ったりできます。
vi コマンド
vi とは Linux を含む Unix ベースの OS で利用できるテキストエディタのことです。主にファイルを編集する時に使うコマンドです。
vi には コマンドモード
と インサートモード
があり、はじめはコマンドモードで起動されます。
インサートモードへ変更
キーボードの i(insert)を押すと編集モードに移行します。
(※他の方法でも移行できますが、ここでは割愛します。)
コマンドモードへ変更
escキー を押下するとコマンドモードへ戻ります。
vi エディタ利用中に、なぜか「ESC」キーが調子悪くなったので、その際に利用したショートカット。
下記のショートカットキーを利用すれば、インサートモードからノーマルモードに「ESC」キーを利用せずに戻ることが可能。
viを閉じる
[ コマンドモード ] の状態で以下を実行。
:wq | 保存して終了 |
:q! | 編集内容を保存したくない場合 |
行番号の表示
:set number | vi もしくは vim に行番号が表示されます。 |
検索
less や man コマンド内でも利用する標準操作です。コマンドモードで操作します。
キー入力 | 動作 |
---|---|
/<文字列> | 文字列を検索する(順方向) |
?<文字列> | 文字列を検索する(逆方向) |
n | 順方向へ検索する |
N | 逆方向へ検索する |
削除
viコマンドで最もつまづくのが文字の削除です。入力モードのまま、上下左右へのカーソルの移動、delete、BackSpaceなどの文字をしようとすると、想定外の文字が入力されます。
1)「escキー」でコマンドモードへ変更
2)上下左右のカーソル移動後、「x」キーで一文字削除
ファイルの内容を変更するのではなく、閲覧、確認するだけなら次のコマンドを使用します。
cat | 保存して終了 |
more | 編集内容を保存したくない場合 |
less | ファイルの内容を表示する。上下カーソルキーでスクロールができる。 |
tail コマンド
tail コマンドはファイルの最終行から数行を表示するコマンドです。
標準では10行を表示します。
Apacheのアクセスログを見るのによく利用します。
オプション | 解説 |
---|---|
-f | ファイルの追記を監視する |
パッケージの管理(yum・apt-get)
RedHat系(Amazon Linux、CentOS)→ yumコマンド
Debian系(Ubuntu)→ apt-getコマンド
yum
apt-get
WEBからファイルをダウンロード(wget・curl)
wget
wget コマンドは、WEBサーバーからコンテンツを取得するためのコマンドです。
wget { ファイルのURL }
でWEBサーバーからコンテンツを取得します。
wgetコマンドは CentOS などではデフォルトでインストールされていない場合があります。インストール自体は難しくありませんが、代わりに curl
(カール)を使うことができます。
curl
curl コマンドも、ファイルをダウンロードしたりアップロードしたりするためのコマンドです。最近のLinuxディストリビューションではデフォルトでインストールされています。
curl { ファイルのURL }
でWEBサーバーからコンテンツを取得します。
-sS
のオプションは「進捗は表示されないけどエラーは表示する」という意味です。
バージョンの確認(OS・PHP・MySQL)
OS
PHP
MySQL
データベースサーバープログラム。ディスクまたはメモリ内の実際のデータベースへのアクセスを管理する。
【 MySQLクライアント 】
サーバと通信してサーバが管理するデータベース内の情報を操作するためのプログラム。
アプリケーションの起動(Apache・MySQL)
Apache
MySQL
curl(カール)コマンド
基本形
アクセスできたかどうかの確認だけならば、わざわざブラウザを開かずとも黒い画面から curl
コマンドだけで確認が可能です。
GET や POST を指定する場合
-X
は GET や POST を指定します。
-d
は POST のデータを指定します。形式は 'value=name' です。
HTTPヘッダを指定
HTTP ヘッダを指定します。ユーザエージェントとかリファラとか
圧縮したアーカイブの作成と解凍・展開(tarコマンド)
Linuxでは、複数のファイルをまとめて1つのアーカイブファイルとして作成するには「tar」コマンドを使用します。
圧縮したアーカイブを作成
実演
以下は、tarコマンドで使用する主なオプションです。
オプション | 説明 |
---|---|
c | 新しいtarファイルを作る(create) |
v | 圧縮・解凍状況を表示(基本的にvは指定しなくてもOK) |
f | 圧縮ファイル名指定(filename) |
z | gzipの圧縮処理を行う |
t | アーカイブファイルの一覧を表示する |
x | アーカイブを展開 |
p | パーミッション保持したまま |
tarコマンドでパーミッション保持したまま圧縮/解凍するには「P」オプションをつける。Laravelのプロジェクト丸ごと移動させるときに便利です。
(※解凍時はroot権限でないとパーミッションを持ったまま解凍できない模様。)
圧縮したアーカイブを解凍・展開する
実演
リダイレクションとパイプ(>>・>・|)
Unix、Linuxのコマンドで、標準出力の結果を何かに渡したいときには、リダイレクションである「>」「>>」やパイプ「|」をよく使います。
リダイレクション
リダイレクションは、標準出力をテキストファイルに渡したいときに使用します。
「>>」リダイレクション
ファイルへの追記するときに使います。
「>」リダイレクション
ファイルへの上書きをするときに使います。
パイプ
パイプは、標準出力をコマンドに渡したいときに使用します。
形式
例)ps aux
で実行中のプロセスを出力し(ターミナルには出力されない)、その中からキーワードhttpd
にマッチする行を出力する
キーペア [ 秘密鍵と共通鍵 ] 作成(ssh-keygen)
GitのリモートリポジトリとSSH接続させるときに使います。
.pub が名前についていない方(client_rsa)は秘密鍵です。秘密鍵はクライアント側に保存。
コマンドの履歴を見る(history)
「less」コマンド中に使える操作
コマンド | 説明 |
---|---|
SPACEキー | 1画面スクロール |
bキー | 1画面逆スクロール |
gキー | 先頭に移動 |
Gキー | 末尾に移動 |
/検索ワード | 文字列検索 |
PHPを実行
ちょっとしたPHPをコマンドラインから実行
コマンドのフルパスを表示(which)
ローカル/リモート間のコピー(scp)
不正アクセス確認(lastb)
SSHでログイン(ssh)
公開鍵をリモートサーバーに登録(ssh-copy-id)
ローカルで生成した公開鍵をリモートサーバーに登録する方法です。
サービスの起動や停止、状態確認(systemctl)
systemctl は systemd を操作するコマンドです。
linux のシステムとサービスを管理するデーモンです。RHEL7、CentOS7、Amazon Linux2 などは、サービスの管理に systemd が使われています。
ファイアウォールの設定(firewall-cmd)
firewall-cmd
はファイアウォールの設定を行うコマンドです。
CentOS7 では、ファイアウォールの設定コマンドとして firewalld を使います。CentOS6 までは iptables でしたが、CentOS7 からはデフォルトのファイアウォールコマンドが変更になっています。
Ubuntu →
ufwコマンド
openSUSE →
SUSEfirewall2コマンド
ルール | ルールの保存先 |
---|---|
ランタイムルール | ルールはメモリ上に保存される。firewalldをリスタートすると消える |
パーマネントルール | ルールはファイル(/etc/firewalld/zones配下)に保存される。firewalldをリスタートすると、ファイルからルールが読み込まれメモリに展開される。 |
ドキュメントルート所有者・権限変更(chown・chmod)
Apache をインストールするとデフォルトでは /var/www/html の場所が HTML を設置するディレクトリ(ドキュメントルート)になります。
ただ、書き込み権限がrootユーザーのみなので、apacheユーザーと一般ユーザーでも書き込みできるように、権限を変更してあげます。
実演
秘密鍵を一時的に保持(ssh-agent)
ssh-agent を起動して秘密鍵を登録しておけば、 ssh コマンドを実行した際に自動的に秘密鍵を適用して認証処理を行ってくれます。
パスフレーズの入力は、秘密鍵の登録時に一度行うだけで済みます。
実演
Apacheのログ(生ログ)の確認方法
Apache のログの設置場所は、/etc/httpd/conf/httpd.conf
に書かれています。
vim で開き、検索コマンドで検索します。
検索コマンドに、/CustomLog
(アクセスログ)と入力。
エラーログを記述している箇所を見る場合は /EddorLog
と入力。
小文字の n キー・・・順送り
大文字の N キー・・・逆送り
以下のように見つけることができます。
恐らく大体は以下のように設定されています。
エラーログ:/var/log/httpd/error_log もしくは /var/log/apache2/error_log
ログの確認するコマンドは、lessコマンドが一般的です。
q キー・・・lessコマンドの終了
/ キー・・・検索(※viと同じ)
n キー・・・順送り
access_log … アクセスログ
error_log … エラーログ
ssl_access_log … SSLアクセスログ
ssl_error_log … SSLエラーログ
ssl_request_log … SSLアクセスログ

php.ini のパスの確認
コマンドラインのみで PHP の実行ができる。
--run
の省略形。【 grepコマンド 】
Linuxのユーザ追加(useradd)
CentOS7でのuseraddコマンドを使用してユーザを追加する方法を紹介します。
システムのタイムゾーンを設定(timedatectl)
PHP の time() 関数を使ってタイムスタンプを取得したとき、時間がずれていることとかありませんか?
この場合、timedatectl コマンドを使ってタイムゾーンを日本(Asia/Tokyo)にしてやると上手くいきます。
以上です。

新しいLinuxの教科書
ただ、読むだけではなく実践しながら進める形式になっています。(※コマンド一覧とか早引きの本ではありません)初心者がつまずくであろう箇所は補足説明がしっかり入っています。基本を大事にしている本なので、書いてあることはとてもわかりやすいです。それゆえ、中級者以上の方には物足りないかもしれませんが、初学者にはススメします!

仕事で Laravel を使っています。気づいたことや新しい発見など情報を発信していきます。問い合わせはこちら。