Linuxのサーバコマンドの備忘録です。CentOS系のコマンドも書くかもしれません。
- 操作等
- 共通箇所
- コマンド一覧
- 基本頻出
- ディレクトリ操作
- ファイル操作
- リダイレクト
- 検索系
- ユーザーとグループ
- アクセス権
- シェルプログラム
- シェルプログラムを書く2
- コマンド履歴
- その他
- 環境変数
- Laravelのバージョンを調べる
- 動いているCronを調べる
- Webサーバ再起動
- データベースインポート
- ファイヤーウォールの空いているポートを調べる
- ファイヤーウォールが起動しているか
- ホスト名を調べる
- CPU情報を調べる
- パーティション情報を確認する
- ディスク容量を確認する
- IPアドレスなどeth0のネットワーク設定を調べる
- ディストリビューションを調べる
- SELinuxの有効か無効か調べる
- ユーザー情報を確認する
- PHPのバージョンを調べる
- インストールされてるPHPを調べる
- インストールされてるApacheを調べる
操作等
ログインや操作方法などの予備知識です。
サーバへログイン
WindowsならTeratarm、Macなら標準のターミナルからアクセスが基本。
Windows
割愛します。GUIなので直感的にできます。
Mac
下記コマンドを打てばパスワードを聞かれるのでそれをクリアすればログイン完了。鍵の場所は絶対パスで書いてもいいが、鍵のある場所にcdで移動してからの方が楽かも。サーバのアドレスはドメイン名でもOK。
# 文法 $ ssh サーバのアドレス -l ユーザ名 -i 鍵ファイル # 文例(鍵無し) $ ssh 192.168.0.10 -l user # 文例(鍵付き) $ ssh 192.168.0.10 -l user -i hogekey.pem
共通箇所
コマンドに関する共通知識です。
オプションについて
オプションは順不同で書ける
# 以下は同じ動き $ コマンド -al $ コマンド -la
オプションは分けて書いても良い
$ ls -a -l
オプションは引数の後でも書ける
$ ls -al /etc $ ls /etc -al
コマンドを取り消したい
- コマンドを取り消したい Ctrl + C
- 途中まで打ったコマンドを消したい Ctrl + U
- 画面全体をクリアしたい Ctrl + L (もしくはclear)
HELP機能
コマンドのオプションを調べたい –help
# lsのオプションを調べたいのなら $ ls --help
コマンドのマニュアルを見たい man
次ページはSpaceキー、終了はQキー
# pwdのマニュアルを見たいのなら $ man pwd
ワイルドカード
*は任意の複数文字
# .confで終わるファイル名 $ ls *.conf
?は任意の一文字
# sで始まる6文字のファイル名 shadow shells $ ls s?????
[]は任意の一文字か範囲
# pかsから始まる6文字のファイル名 shadow shells passwdなど $ ls [ps]????? # fからhから始まるファイル名 fstab hostsなど $ ls [f-h]*
{} は任意の文字列
# shかhoで始まるファイル名 shadow hostsなど $ ls {sh,ho}*
コマンドの簡単な入力
直前の引数の値は!$に入る
これを利用することでlsで調べたディレクトリに一気に移動できる。
# lsの引数に/etcを指定すると $ ls /etc # !$の中に直前の引数の値(/etc)が入っている $ echo !$
コマンドの検索
「Ctlキー」+「R」で検索モードに入る。抜ける時は「Ctlキー」+「C」
(reverse-i-search) `': 何か文字を打つ
コマンド一覧
基本頻出
現在のディレクトリを調べる pwd
プリントワーキングディレクトリ
$ pwd
ディレクトリの中身を見る ls
# 基本 $ ls # 詳細も表示する $ ls -l # 隠しファイルも表示する $ ls -a # 対象を指定することもできる $ ls -al /etc
別のディレクトリに移動する cd
現在のディレクトリからのパスを指定する。
$ cd ./ディレクトリ名 $ cd ディレクトリ名 # ホームディレクトリに移動 $ cd ~ $ cd # ひとつ上のディレクトリに移動 $ cd .. # 直前引数に渡した場所に移動 $ ls /etc $ cd !$
ディレクトリ操作
ディレクトリを作る
# 文法 $ mkdir ディレクトリ名 # 文例 $ mkdir mysite # -pオプションで深い階層まで一気に作る $ mkdir -p mysite/css
ディレクトリの削除
# 文法 $ rmdir ディレクトリ名 # 文例 $ rmdir mysite
ファイル操作
ファイルを作る touch
# 文法 $ touch ファイル名 # 文例 $ touch index.html
ファイルの中身を見る cat more less
# 一気に表示する $ cat ファイル名 # spaceで次へ,Qで抜ける $ more ファイル名 # viと同じ使い勝手なので検査も可能 $ less ファイル名
ファイルを編集する vi
viの説明はこちら
ファイルの先頭から数行表示する head
# 文法 $ head -n ファイル名 # 文例 $ head -3 services
ファイルの末尾から数行表示する tail
# 文法 $ tail -n ファイル名 # 文例 $ tail -3 services
ファイルの行数や単語数を調べる wc
表示される結果は、左から行数・単語数・バイト数・ファイル名。
# 文法 $ wc ファイル名 # 文例 $ wc services # -lで行数だけ $ wc -l services
ファイルやディレクトリをコピーする cp
cpコマンドはオプションを指定しないとファイルだけが対象となる。
# 文法 $ cp 元ファイル名 先ファイル名 # 文例 $ cp index.html profile.html # ディレクトリの場合は-rオプションを使う $ cp -r mysite # 他のディレクトリを現在のディレクトリにコピーしてくる $ cp /etc/services .
ファイルやディレクトリの移動と名前の変更 mv
# 移動の文法 $ mv ファイル名 移動先パス/ # 移動の文例 $ mv index.html mysite/ # ファイル名変更の文法 $ mv ファイル名 変更後ファイル名 # ファイル名変更の文例 $ mv profile.html about.html # ディレクトリ名の変更も同じ $ mv mysite myprifile
ファイルやディレクトリの削除 rm
rmは基本的にはファイルの削除。オプションを付けるとディレクトリも削除できる
# 文法 $ rm ファイル名 # 文例 $ rm index.html # ディレクトリを削除 $ rm -r mysite
シンボリックリンクの作成
現在のディレクトリ(リンク元)にリンク先へのショートカットができる。
# 文法 $ ln -s リンク先 リンク元 # 文例 $ ln -s mysite/css/common mycommon # ファイルにも使える $ ln -s mysite/css/common/index.html myfile # リンクの削除 $ rm mycommon
リダイレクト
ファイルの中に書き込む >
$ echo 'aaaa' > file.txt
ファイルの中に追記する >>
$ echo 'bbbb' >> file.txt
コマンドの実行結果を別のコマンドに渡す |(パイプ)
$ ls -l /etc | grep 'log'
コマンドが成功したら次のコマンドを実行する &&
$ mkdir test && cd test
ブレース展開
ブレースとは波括弧のこと。シェルにはその中に入れた数字や文字を決められた法則にしたがって展開する機能がある。
# 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
# 文法 $ grep '文字列' ファイル名 # 文例 $ grep 'backup' services
パイプとgrepで検索する
lsをした結果の中にsudoが含まれるものだけを表示する
# 文法 $ コマンド | grep 文字列 # 文例 $ ls -l /etc | grep sudo
パイプを組み合わせる
lsの結果をgrepで検索してwcで行数を表示する
# 結果は5 $ ls -l /etc/ | grep 'sudo' | wc -l
ファイルを検索する find
# 文法 $ find [検索場所] [オプション] [検索ワード] $ 文例 app3.pngという名前のファイルを捜す $ find test -name 'app3.png' $ 文例 ディレクトリを捜す(ファイルはf) $ find test -type d $ 文例他 $ find test -name 'app1*' -type f
ユーザーとグループ
ユーザーの一覧を表示する
ユーザーのデータは/etc/passwdに入っている。
$ 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に入っている
$ cat /etc/group # 表示結果 wheel:x:10:root,dotins
表示される項目は順番に、
- グループの名前
- グループのパスワード
- グループID
- グループに所属しているユーザー
特定のユーザーがどのグループに所属しているか
# 文法 $ 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つの足し引きなら「+」や「-」でも使えるかも。
# 文法 $ 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権限がないと見れない。
# 文法 $ sudo コマンド # 文例 $ sudo cat /etc/shadow
シェルプログラム
helloというファイル名のプログラムを作る
viでファイルを作成する
$ vi hello
シェルプログラムを書く
最初の2文字#!はシェバンと言い、これがあれば次のプログラムで実行しなさいという意味。
#!/bin/ash echo 'Hello there!'
実行権限を付与する chmod
$ chmod u+x hello
環境変数を設定する export
プログラムを置いたディレクトリにパスを通す
$ export = PATH=/home/user:$PATH
実行する
$ hello
シェルプログラムを書く2
<を使ってファイルの中身を流し込むみつつ、リダイレクトでresult.txtへ書き込む。
$ echo 'date' > commands.txt $ echo 'cal' >> commands.txt $ /bin/ash < commands.txt > result.txt
コマンド履歴
実行コマンドの履歴を表示する
$ history
historyのコマンドを番号で実行
# 文法 $ !番号 # 文例(history番号の5番目) $ !5
直前のコマンドを実行
$ !!
historyを消す
$ history -d 番号
historyを全部消すとき
$ history -c
その他
マシンに設定された日付を表示する date
$ date
今月のカレンダーを表示する cal
$ cal
環境変数
環境変数を見る
$ echo $PATH
環境変数を設定する export
exportは環境変数を設定する命令。/home/userのパスを現在の$PATHにつなげて代入する。尚これは一時的なものなので永続的にするには別の方法が必要。
$ export = PATH=/home/user:$PATH
Laravelのバージョンを調べる
$ php artisan --version
Laravelが入っているディレクトリで行うこと
動いているCronを調べる
$ crontab -l
Webサーバ再起動
# service httpd restart # systemctl restart httpd
データベースインポート
$ mysql -u root dbname < filename.sql
ファイヤーウォールの空いているポートを調べる
$ firewall-cmd --list-ports
ファイヤーウォールが起動しているか
$ firewall-cmd --status
ホスト名を調べる
$ hostname
CPU情報を調べる
$ cat /proc/cpuinfo
model name : CPUの種類
cpu MHz : CPUの動作クロック
cpu cores : CPUのコア数
siblings : HT込みの見せかけ後のコア数
パーティション情報を確認する
# parted -l
ディスク容量を確認する
$ df $ df -m $ df -h
-mがMB単位で、-hが人間に解りやすく表示
IPアドレスなどeth0のネットワーク設定を調べる
$ ifconfig eth0
ディストリビューションを調べる
$ cat /etc/redhat-release
SELinuxの有効か無効か調べる
$ getenforce
Disabledなら無効
ユーザー情報を確認する
$ cat /etc/passwd
PHPのバージョンを調べる
$ php -v
インストールされてるPHPを調べる
$ rpm -qa | grep php
インストールされてるApacheを調べる
$ rpm -qa | grep httpd
コメント