Linuxのサーバコマンドの備忘録です。CentOS系のコマンドも書くかもしれません。
- 操作等
- 共通箇所
- コマンド一覧
- 基本頻出
- ディレクトリ操作
- ファイル操作
- リダイレクト
- 検索系
- ユーザーとグループ
- アクセス権
- シェルプログラム
- シェルプログラムを書く2
- コマンド履歴
- その他
- 環境変数
- Laravelのバージョンを調べる
- 動いているCronを調べる
- Webサーバ再起動
- データベースインポート
- ファイヤーウォールの空いているポートを調べる
- ファイヤーウォールが起動しているか
- ホスト名を調べる
- CPU情報を調べる
- パーティション情報を確認する
- ディスク容量を確認する
- IPアドレスなどeth0のネットワーク設定を調べる
- ディストリビューションを調べる
- SELinuxの有効か無効か調べる
- ユーザー情報を確認する
- PHPのバージョンを調べる
- インストールされてるPHPを調べる
- インストールされてるApacheを調べる
操作等
ログインや操作方法などの予備知識です。
サーバへログイン
WindowsならTeratarm、Macなら標準のターミナルからアクセスが基本。
Windows
割愛します。GUIなので直感的にできます。
Mac
下記コマンドを打てばパスワードを聞かれるのでそれをクリアすればログイン完了。鍵の場所は絶対パスで書いてもいいが、鍵のある場所にcdで移動してからの方が楽かも。サーバのアドレスはドメイン名でもOK。
1 2 3 4 5 6 7 8 |
# 文法 $ ssh サーバのアドレス -l ユーザ名 -i 鍵ファイル # 文例(鍵無し) $ ssh 192.168.0.10 -l user # 文例(鍵付き) $ ssh 192.168.0.10 -l user -i hogekey.pem |
共通箇所
コマンドに関する共通知識です。
オプションについて
オプションは順不同で書ける
1 2 3 |
# 以下は同じ動き $ コマンド -al $ コマンド -la |
オプションは分けて書いても良い
1 |
$ ls -a -l |
オプションは引数の後でも書ける
1 2 |
$ ls -al /etc $ ls /etc -al |
コマンドを取り消したい
- コマンドを取り消したい Ctrl + C
- 途中まで打ったコマンドを消したい Ctrl + U
- 画面全体をクリアしたい Ctrl + L (もしくはclear)
HELP機能
コマンドのオプションを調べたい –help
1 2 |
# lsのオプションを調べたいのなら $ ls --help |
コマンドのマニュアルを見たい man
次ページはSpaceキー、終了はQキー
1 2 |
# pwdのマニュアルを見たいのなら $ man pwd |
ワイルドカード
*は任意の複数文字
1 2 |
# .confで終わるファイル名 $ ls *.conf |
?は任意の一文字
1 2 |
# sで始まる6文字のファイル名 shadow shells $ ls s????? |
[]は任意の一文字か範囲
1 2 3 4 5 |
# pかsから始まる6文字のファイル名 shadow shells passwdなど $ ls [ps]????? # fからhから始まるファイル名 fstab hostsなど $ ls [f-h]* |
{} は任意の文字列
1 2 |
# shかhoで始まるファイル名 shadow hostsなど $ ls {sh,ho}* |
コマンドの簡単な入力
直前の引数の値は!$に入る
これを利用することでlsで調べたディレクトリに一気に移動できる。
1 2 3 4 5 |
# lsの引数に/etcを指定すると $ ls /etc # !$の中に直前の引数の値(/etc)が入っている $ echo !$ |
コマンドの検索
「Ctlキー」+「R」で検索モードに入る。抜ける時は「Ctlキー」+「C」
1 |
(reverse-i-search) `': 何か文字を打つ |
コマンド一覧
基本頻出
現在のディレクトリを調べる pwd
プリントワーキングディレクトリ
1 |
$ pwd |
ディレクトリの中身を見る ls
1 2 3 4 5 6 7 8 |
# 基本 $ ls # 詳細も表示する $ ls -l # 隠しファイルも表示する $ ls -a # 対象を指定することもできる $ ls -al /etc |
別のディレクトリに移動する cd
現在のディレクトリからのパスを指定する。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
$ cd ./ディレクトリ名 $ cd ディレクトリ名 # ホームディレクトリに移動 $ cd ~ $ cd # ひとつ上のディレクトリに移動 $ cd .. # 直前引数に渡した場所に移動 $ ls /etc $ cd !$ |
ディレクトリ操作
ディレクトリを作る
1 2 3 4 5 6 7 8 |
# 文法 $ mkdir ディレクトリ名 # 文例 $ mkdir mysite # -pオプションで深い階層まで一気に作る $ mkdir -p mysite/css |
ディレクトリの削除
1 2 3 4 5 |
# 文法 $ rmdir ディレクトリ名 # 文例 $ rmdir mysite |
ファイル操作
ファイルを作る touch
1 2 3 4 5 |
# 文法 $ touch ファイル名 # 文例 $ touch index.html |
ファイルの中身を見る cat more less
1 2 3 4 5 6 7 8 |
# 一気に表示する $ cat ファイル名 # spaceで次へ,Qで抜ける $ more ファイル名 # viと同じ使い勝手なので検査も可能 $ less ファイル名 |
ファイルを編集する vi
viの説明はこちら

ファイルの先頭から数行表示する head
1 2 3 4 5 |
# 文法 $ head -n ファイル名 # 文例 $ head -3 services |
ファイルの末尾から数行表示する tail
1 2 3 4 5 |
# 文法 $ tail -n ファイル名 # 文例 $ tail -3 services |
ファイルの行数や単語数を調べる wc
表示される結果は、左から行数・単語数・バイト数・ファイル名。
1 2 3 4 5 6 7 8 |
# 文法 $ wc ファイル名 # 文例 $ wc services # -lで行数だけ $ wc -l services |
ファイルやディレクトリをコピーする cp
cpコマンドはオプションを指定しないとファイルだけが対象となる。
1 2 3 4 5 6 7 8 9 10 11 |
# 文法 $ cp 元ファイル名 先ファイル名 # 文例 $ cp index.html profile.html # ディレクトリの場合は-rオプションを使う $ cp -r mysite # 他のディレクトリを現在のディレクトリにコピーしてくる $ cp /etc/services . |
ファイルやディレクトリの移動と名前の変更 mv
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
# 移動の文法 $ mv ファイル名 移動先パス/ # 移動の文例 $ mv index.html mysite/ # ファイル名変更の文法 $ mv ファイル名 変更後ファイル名 # ファイル名変更の文例 $ mv profile.html about.html # ディレクトリ名の変更も同じ $ mv mysite myprifile |
ファイルやディレクトリの削除 rm
rmは基本的にはファイルの削除。オプションを付けるとディレクトリも削除できる
1 2 3 4 5 6 7 8 |
# 文法 $ rm ファイル名 # 文例 $ rm index.html # ディレクトリを削除 $ rm -r mysite |
シンボリックリンクの作成
現在のディレクトリ(リンク元)にリンク先へのショートカットができる。
1 2 3 4 5 6 7 8 9 10 11 |
# 文法 $ ln -s リンク先 リンク元 # 文例 $ ln -s mysite/css/common mycommon # ファイルにも使える $ ln -s mysite/css/common/index.html myfile # リンクの削除 $ rm mycommon |
リダイレクト
ファイルの中に書き込む >
1 |
$ echo 'aaaa' > file.txt |
ファイルの中に追記する >>
1 |
$ echo 'bbbb' >> file.txt |
コマンドの実行結果を別のコマンドに渡す |(パイプ)
1 |
$ ls -l /etc | grep 'log' |
コマンドが成功したら次のコマンドを実行する &&
1 |
$ mkdir test && cd test |
ブレース展開
ブレースとは波括弧のこと。シェルにはその中に入れた数字や文字を決められた法則にしたがって展開する機能がある。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
# a b c $ echo {a,b,c} # a b c d e f $ echo {a..f} # 1a 1b 2a 2b 3a 3b $ echo {1..3}{a..b} # app1からapp5までディレクトリを作成 $ mkdir app{1..5} # app1からapp5の中にファイルを作る $ touch app{1..5}/test{1..3}{.jpg,.png,.gif} # app1からapp5の中の.png以外を削除する $ rm app{1..5}/test{1..3}{.jpg,.gif} # testディレクトリの中にapp1からapp5のディレクトリを作る $ mkdir -p test/app{1..5} |
検索系
文字がある行だけを表示する grep
1 2 3 4 5 |
# 文法 $ grep '文字列' ファイル名 # 文例 $ grep 'backup' services |
パイプとgrepで検索する
lsをした結果の中にsudoが含まれるものだけを表示する
1 2 3 4 5 |
# 文法 $ コマンド | grep 文字列 # 文例 $ ls -l /etc | grep sudo |
パイプを組み合わせる
lsの結果をgrepで検索してwcで行数を表示する
1 2 |
# 結果は5 $ ls -l /etc/ | grep 'sudo' | wc -l |
ファイルを検索する find
1 2 3 4 5 6 7 8 9 10 11 |
# 文法 $ find [検索場所] [オプション] [検索ワード] $ 文例 app3.pngという名前のファイルを捜す $ find test -name 'app3.png' $ 文例 ディレクトリを捜す(ファイルはf) $ find test -type d $ 文例他 $ find test -name 'app1*' -type f |
ユーザーとグループ
ユーザーの一覧を表示する
ユーザーのデータは/etc/passwdに入っている。
1 2 3 4 5 |
$ cat /etc/passwd # 表示結果 root:x:0:0:root:/root:/bin/ash dotins:x:1000:10:Comment:/home/dotins:/bin/ash |
表示される項目は順番に
- ユーザー名
- パスワード(非表示のx)
- ユーザーID
- グループID
- コメント
- ホームディレクトリの位置
- シェルコマンド
グループの一覧を表示する
グループのデータは/etc/groupに入っている
1 2 3 4 |
$ cat /etc/group # 表示結果 wheel:x:10:root,dotins |
表示される項目は順番に、
- グループの名前
- グループのパスワード
- グループID
- グループに所属しているユーザー
特定のユーザーがどのグループに所属しているか
1 2 3 4 5 6 7 8 |
# 文法 $ groups ユーザー名 # 文例 $ groups root # 結果 root bin daemon sys adm disk wheel floppy dialout tape video |
アクセス権
ls -lで詳細表示してところ。ファイルのアクセス権。
最初の1文字はファイル(-)、ディレクトリ(d)、シンボリックリンク(l)
次の3つは、ユーザに与えられている権限、Read,Write,eXecuteの意味。
次の3つの塊がグループに与えられている権限、一番右がその他のユーザー。
その次がそのファイルやディレクトリを所有するユーザーやグループ。
アクセス権の変更 chmod
色んな書き方があるが数字で指定した方が楽。1つの足し引きなら「+」や「-」でも使えるかも。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
# 文法 $ chmod アクセス権 ファイルやディレクトリ # 文例1(全てにフルの所有権) $ chmod a=rwxrwxrwx index.html # 文例2(グループはrw、その他はrにする) $ chmod g=rw,o=r index.html # 文例3(グループにxを足す、その他からrを引く) $ chmod g+x,o-r index.html # 文例4(全てにフルの所有権) $ chmod 777 index.html |
略号
- u = User
- g = Group
- o = other
- a = 全て
- 4 = read(読む)
- 2 = write(書き)
- 1 = execute(実行)
一時的にルート権限を使う sudo
/etc/shadowは通常root権限がないと見れない。
1 2 3 4 5 |
# 文法 $ sudo コマンド # 文例 $ sudo cat /etc/shadow |
シェルプログラム
helloというファイル名のプログラムを作る
viでファイルを作成する
1 |
$ vi hello |
シェルプログラムを書く
最初の2文字#!はシェバンと言い、これがあれば次のプログラムで実行しなさいという意味。
1 2 |
#!/bin/ash echo 'Hello there!' |
実行権限を付与する chmod
1 |
$ chmod u+x hello |
環境変数を設定する export
プログラムを置いたディレクトリにパスを通す
1 |
$ export = PATH=/home/user:$PATH |
実行する
1 |
$ hello |
シェルプログラムを書く2
<を使ってファイルの中身を流し込むみつつ、リダイレクトでresult.txtへ書き込む。
1 2 3 |
$ echo 'date' > commands.txt $ echo 'cal' >> commands.txt $ /bin/ash < commands.txt > result.txt |
コマンド履歴
実行コマンドの履歴を表示する
1 |
$ history |
historyのコマンドを番号で実行
1 2 3 4 5 |
# 文法 $ !番号 # 文例(history番号の5番目) $ !5 |
直前のコマンドを実行
1 |
$ !! |
historyを消す
1 |
$ history -d 番号 |
historyを全部消すとき
1 |
$ history -c |
その他
マシンに設定された日付を表示する date
1 |
$ date |
今月のカレンダーを表示する cal
1 |
$ cal |
環境変数
環境変数を見る
1 |
$ echo $PATH |
環境変数を設定する export
exportは環境変数を設定する命令。/home/userのパスを現在の$PATHにつなげて代入する。尚これは一時的なものなので永続的にするには別の方法が必要。
1 |
$ export = PATH=/home/user:$PATH |
Laravelのバージョンを調べる
1 |
$ php artisan --version |
Laravelが入っているディレクトリで行うこと
動いているCronを調べる
1 |
$ crontab -l |
Webサーバ再起動
1 2 |
# service httpd restart # systemctl restart httpd |
データベースインポート
1 |
$ mysql -u root dbname < filename.sql |
ファイヤーウォールの空いているポートを調べる
1 |
$ firewall-cmd --list-ports |
ファイヤーウォールが起動しているか
1 |
$ firewall-cmd --status |
ホスト名を調べる
1 |
$ hostname |
CPU情報を調べる
1 |
$ cat /proc/cpuinfo |
model name : CPUの種類
cpu MHz : CPUの動作クロック
cpu cores : CPUのコア数
siblings : HT込みの見せかけ後のコア数
パーティション情報を確認する
1 |
# parted -l |
ディスク容量を確認する
1 2 3 |
$ df $ df -m $ df -h |
-mがMB単位で、-hが人間に解りやすく表示
IPアドレスなどeth0のネットワーク設定を調べる
1 |
$ ifconfig eth0 |
ディストリビューションを調べる
1 |
$ cat /etc/redhat-release |
SELinuxの有効か無効か調べる
1 |
$ getenforce |
Disabledなら無効
ユーザー情報を確認する
1 |
$ cat /etc/passwd |
PHPのバージョンを調べる
1 |
$ php -v |
インストールされてるPHPを調べる
1 |
$ rpm -qa | grep php |
インストールされてるApacheを調べる
1 |
$ rpm -qa | grep httpd |
コメント