Server

よく使うLinuxコマンドの覚え書き

Category

Server

サイト制作の際、専用サーバーやVPSサーバーを利用されている方も多いと思います。
サーバーの設定を変更したり、各種モジュールやライブラリ、フレームワーク等もインストールしたりすることもでき、とても便利です(当サイトもVPSサーバーを利用しています)。
今回は、自分用に"よく使うLinuxコマンドの覚え書き"を記事にしてみようと思います。

Keyword:Linuxコマンド,vi,yum,Tera Term

Linuxコマンド

Linuxコマンド

ファイル管理

#ディレクトリの移動
cd [ディレクトリ名]
例) cd /home/username
usernameディレクトリに移動します。 

#カレントディレクトリを表示
pwd

#カレントディレクトリ内のファイルを一覧表示
ls [オプション] [ディレクトリ名]
[オプション]
-a・・・隠しファイルを表示(".[ドット]"で始まるファイル等)
-l・・・詳細表示(パーミッション・グループ・所有者・サイズ・タイムスタンプ等)
-t・・・日時順に並べ替え
-F・・・名前の最後にファイルタイプを付ける
・ディレクトリ ⇒ …/
・実行可能ファイル ⇒ …*
・リンクファイル ⇒ …@ など
-s・・・ファイル名の横にキロバイト(kB)単位でファイルサイズを表示
例) ls -al webcreator-net
カレントディレクトリにあるwebcreator-netディレクトリ内を隠しファイルも含めて詳細表示します。

#ディレクトリの作成
mkdir [オプション] [ディレクトリ名]
[オプション]
-m・・・ディレクトリのモードを指定して作成
-p・・・存在しないディレクトリ階層を作成
例) mkdir -p image/common
カレントディレクトリ内にimage/commonというディレクトリ階層を作成します。

#新規空ファイルの作成
touch [ファイル名]
例) touch info.php
カレントディレクトリ内にinfo.phpという新規空ファイルを作成します。
中身を記述する際は、viコマンド("vi info.php")を使います。

#新規ファイルを作成
vi [ファイルのパス+新規作成するファイル名]
例) vi information/info.php
カレントディレクトリ内にあるinformationディレクトリ内にinfo.phpを作成します。

#ファイルの削除
rm [オプション] [ファイル名]
[オプション]
-f・・・存在しないファイルがあってもエラーを出力しない
-i・・・ファイルを削除する前に確認
-r・・・ディレクトリを削除

#空ディレクトリの削除
rmdir [空ディレクトリ名]

#ディレクトリごと削除
rm -r [ディレクトリ名]

#ディレクトリごと強制的に削除
rm -rf [ディレクトリ名]

#ファイル名の変更・移動
mv [元ファイル名(ファイル名)] [新ファイル名(移動先)]
例1) mv a.php b.php
カレントディレクトリ内にあるa.phpというファイル名をb.phpに変更します。
例2) mv a.php ../file
カレントディレクトリ内にあるa.phpというファイルを1階層上のfileディレクトリ内に移動します。

#ファイルのコピー
cp [ オプション ] [コピー元ファイル名] [コピー先ファイル名]
[オプション]
-b・・・同名ファイルはバックアップして保存
-f・・・同名ファイルを警告せずに上書き
-i・・・同名ファイルがある場合に上書き確認
-p・・・パーミッションやタイムスタンプもコピー
-r・・・ディレクトリを再帰的にコピー
例1) cp a.txt a_copy.txt
カレントディレクトリ内にあるa.txtをコピーし、同一階層上にファイル名a_copy.txtを作成します。
例2) cp a.txt back_up/
カレントディレクトリ内にあるa.txtをコピーし、カレントディレクトリ内にあるback_upというディレクトリ内に同じファイル名でコピーを作成します。

#パーミッション変更
chmod [パーミッション] [ディレクトリ名orファイル名]
[オプション]
-R・・・ディレクトリ以下全てのファイル(ディレクトリ)のパーミッションを変更

#ディレクトリのパーミッションを一括変更
find . -type d -exec chmod [パーミッション] {} \;

#ファイルのパーミッションを一括変更
find . -type f -exec chmod [パーミッション] {} \;

#所有者の変更
chown -R [ユーザー名] [ディレクトリ]
[オプション]
-R・・・ディレクトリ以下全ての所有権を変更

#検索
find [検索の開始パス] [オプション] [アクション]
[オプション]
・-name [ファイル名(ディレクトリ名)]・・・ファイル(ディレクトリ)で検索
・-user [ユーザー名]・・・ユーザーが所有するファイル・ディレクトリを検索
・-group [グループ名]・・・グループが所有するファイル・ディレクトリを検索
・-type [ファイルタイプ]・・・ファイルタイプで検索
[アクション]
・-ls・・・詳細情報を出力
・-print・・・ファイル名のみ出力
・-fprint [ファイル名]・・・ファイルに出力(同名ファイルは上書き)
・-exec [コマンド] {} \;・・・コマンドに引き渡し実行

#全体からファイル名で検索
find / -name [ファイル名]

#カレントディレクトリからファイル名で検索
find . -name [ファイル名]

#全体からファイルタイプで検索し、ファイル名を出力
find / -name "*.[拡張子]" -print
例) find / -name "*.png" -print
全体からpngファイルを検索し、ファイル名を出力します。

#カレントディレクトリからファイルタイプで検索し、詳細情報を出力
find . -name "*.[拡張子]" -ls
例) find . -name "*.dat" -ls
カレントディレクトリからdatファイルを検索し、詳細情報を出力します。

補足

●ディレクトリの移動
cd ..(../)で一階層上に移動します。

●新規空ファイルの作成
“vi info.php”でviエディタを直接開きファイルを保存しても構いません。

●新規ファイルを作成
viエデイタ上で保存しないとファイルは作成されません。

●ディレクトリごと強制的に削除
存在しないファイルがあってもエラーを出力しません。

●ディレクトリ・ファイルのパーミッションを一括変更
ディレクトリのパーミッションは、カレントディレクトリも含めて変更します。
カレントディレクトリが/home/username/dataだとすると、dataディレクトリも含めて以下全てのディレクトリのパーミッションを変更します。
findコマンドと組み合わせた使用法です。
findコマンドのオプション・アクションを参照

●所有者の変更
グループを指定する場合、ユーザー名の後に“:[グループ名]”を追記します。
chown -R [ユーザー名]:[グループ名] [ディレクトリ]

ユーザー管理

#ユーザーを作成
/usr/sbin/useradd [オプション] [ユーザー名]
[オプション]
-d・・・ホームディレクトリを指定
-e・・・ユーザアカウントの有効期限(※月/日/年の順)
-f・・・有効期限を過ぎた場合の使用不可期限(※日数で指定)
-G・・・ユーザアカウントが所属するグループ
例1) /usr/sbin/useradd -d /home/username
/home/usernameをホームディレクトリとしたユーザー(username)を作成します。
例2) /usr/sbin/useradd -e 10/01/13 -G group username
有効期限が2013年1月10日まで、グループ名"group"、ユーザー名"username"のアカウントを作成します。

#パスワ-ドを作成
passwd [ユーザー名]

#パスワードの有効期限の参照・変更
chage [オプション] [ユーザー名]
[オプション]
-E・・・パスワードの有効期限(※フォーマット:yyyy/mm/dd)
-I・・・パスワードの有効期限後、アカウントがロックされるまでの日数
-l・・・パスワードの有効期限を参照
-M・・・パスワードの有効期限(※パスワードの最終更新日からの日数)
-W・・・パスワードの有効期限前にユーザに警告する日数

#ユーザーを削除
/usr/sbin/userdel [オプション] [ユーザー名]
[オプション]
-r・・・ホームディレクトリも同時に削除

補足

●ユーザーを作成
useraddコマンドを使用するには、パスを通す必要があるため、useraddの前に “/usr/sbin/”を付けてパスを通します。
また、ユーザー作成時に“su -”でrootにスイッチした場合、パスは通っていますので“/usr/sbin/”は必要ありません(useradd -d /home/[ユーザー名]でOKです)。
オプション”-f”で日数を”-1″にするとこの機能(有効期限を過ぎた場合の使用不可期限の設定)は無効となります。

●パスワードの有効期限の参照・変更
オプションの”-E”と”-M”の違いは、”-E”は指定した日程までパスワードが有効となりますが、”-M”はパスワードの最終更新日から指定した日数までパスワードが有効となります。

エディタ

#viエディタでテキスト編集
vi [編集するファイルのパス]

#入力(INSERT)モードに切り替え
a・・・カーソル位置の後から文章を追加
i・・・カーソル位置の前から文章を追加

#表示モードに戻る
Esc

#カーソル位置の下に新しい行を挿入
o

#カーソル位置の行を削除
dd

#テキストの削除
x・・・カーソル位置の文字を後ろ方向に削除

#取り消し
u

#検索
/+検索ワード+Enter
n・・・後方検索

#1行目に移動
g

#最終行に移動
G

#1画面下に移動
Ctrl+F

#1画面上に移動
Ctrl+B

#行頭に移動
^

#行末に移動
$

#保存
:w+Enter・・・viを閉じずに保存
:wq+Enter・・・viを閉じて保存
:q!+Enter・・・保存しないでviを閉じる

補足

●入力(INSERT)モードに切り替え
数字を入力する場合、テンキーは使用せず、キーボードのファンクションキー下にある数字キーより入力します。
“1” ⇒ “1(!・ぬ)”といった感じですね。

[その他]
ターミナルエミュレータであるTera Termでコピー&ペーストを行う場合、
Alt+C・・・コピー
Alt+V・・・ペースト
といったショートカットがあります。
また、Tera Term内でコピー&ペーストをする場合、ペースト位置にカーソルを置き、コピー元のテキストを選択(反転表示)し右クリックをすると、ペースト位置にコピーしたいテキストが反映されます。
他テキストエディタのコピー&ペーストは、ほとんどが”Ctrl+C”と”Ctrl+V”ですね。

RPMパッケージ管理

#パッケージのインストール
yum install [パッケージ名]

#インストールされているパッケージの一覧表示
yum list installed

#パッケージの簡易表示
yum list [パッケージ名] 

#パッケージの詳細表示
yum info [パッケージ名] 

#パッケージの更新
yum update [パッケージ名]
例) yum update httpd
アパッチのアップデートを適応します。
また、"rpm -qi httpd"でアパッチのアップデート結果を確認できます(※RPMパッケージの詳細を問い合わせるコマンドです)。

#更新可能なパッケージの確認
yum check-update

#パッケージの削除
yum remove [パッケージ名]

補足

●パッケージの更新
“パッケージ名”を指定してアップデートを実行した場合、そのパッケージのみを更新しますが、指定せずに実行した場合、インストール されている全ての更新可能なパッケージが更新されます。

ダウンロード・解凍・圧縮

#ダウンロード
wget [ダウンロード先のURL]

#解凍・圧縮
tar [オプション] [ファイル名]・・・tar.gzファイルの解凍・圧縮
[オプション]
-c・・・新規にアーカイブを作成
-f・・・アーカイブのファイル名を指定
-t・・・アーカイブの中身を表示
-u・・・アーカイブ内の同名ファイルより新しいものだけを追加
-v・・・処理したファイルを一覧表示
-x・・・アーカイブからファイルを抽出
-z・・・gzipで圧縮、解凍
例1) tar -zxvf data.tar.gz
data.tar.gzを解凍します(解凍・抽出・一覧表示・アーカイブファイル名の指定オプションを付けています)。
例2) tar -cvzf data.tar.gz detail/
detail内のファイルをdata.tar.gzに圧縮します(新規アーカイブ作成・一覧表示・圧縮・アーカイブファイル名の指定オプションを付けています)。
例3) tar -cvzf data.tar.gz file1 file2
file1とfile2をdata.tar.gzに圧縮します(新規アーカイブ作成・一覧表示・圧縮・アーカイブファイル名の指定オプションを付けています)。

unzip [オプション] [ファイル名]・・・zipファイルの解凍
[オプション]
-p・・・標準出力
-l・・・圧縮情報を簡易表示
-z・・・アーカイブコメントを表示 
-Z・・・圧縮情報を表示
例) unzip data.zip
data.zipを解凍します。

zip [ファイル名]・・・zipファイルの圧縮
[オプション]
-A・・・自己解凍形式で圧縮
-d・・・アーカイブから指定ファイルを削除
-l・・・改行をLFからCR LFへ変更
-ll・・・改行をCR LFからLFへ変更
-m・・・アーカイブから指定ファイルを移動
-q・・・クイック圧縮
-t・・・指定日付以降のファイルを圧縮
-u・・・新規・更新されたファイルのみ圧縮
-z・・・コメントの追加
例1) zip data.zip file1 file2
file1とfile2をdata.zipに圧縮します。
例2) zip -d data.zip file1
data.zipからfile1を削除します。

補足

●解凍・圧縮
圧縮ファイルの形式は他にもたくさんあります。
以下サイトが簡潔にまとめらてれいると思いますので、他の圧縮形式に関しては参考にしてみてください。
LinuxOS上での解凍・圧縮方法

システム管理

#ログインユーザーの変更
su [ユーザー名]
suのみの場合、rootにスイッチします。

#ログアウト
exit・・・現在ログインしているユーザーからログアウト

#コマンドを別名で登録
alias [別名] = '[コマンド]'
例) alias rmdir = 'rm -rf'
rmdirコマンドは"空ディレクトリのみ削除可能"ですが、rm -rfコマンドと同じにすることで"ディレクトリごと削除"します。

#別名の登録状況を表示
alias [別名]

#登録されている別名を全て表示
alias

#登録されている別名のコマンドを削除
unalias [別名]

#アパッチを再起動
/etc/rc.d/init.d/httpd restart(service httpd restart)

#アパッチを停止
/etc/rc.d/init.d/httpd stop(service httpd stop)

#アパッチを起動
/etc/rc.d/init.d/httpd start(service httpd start)

#システムを再起動
reboot

#システムをシャットダウン
shutdown
shutdown now・・・今すぐにシステムをシャットダウンして再起動
shutdown -r 23:30・・・23:30にシステムを再起動

#mysqlを再起動
/etc/init.d/mysqld restart

#mysqlを停止
/etc/init.d/mysqld stop

#mysqlを起動
/etc/init.d/mysqld start

#sshを再起動
/etc/init.d/sshd restart

#sshを停止
/etc/init.d/sshd stop

#sshを起動
/etc/init.d/sshd start

補足

●ログインユーザーの変更
パスを通してユーザーをスイッチする場合は”su – [ユーザー名]”でスイッチします。
変更したいユーザーのホームディレクトリに移動できます。

●コマンドを別名で登録。
例では、”-r”と”-f”オプションが付加されていますので、”存在しないファイルがあってもエラーを出力せず、ディレクトリごと削除する”といった意味になります。

●アパッチを再起動
↑(矢印キー上)・・・前回の入力コマンドに戻る
「アッパチの再起動に失敗した」なんて時に、再入力するのは面倒ですので、覚えておくと便利ですね。

ネットワーク

#ネットワークの疎通確認
ping [IPアドレス(またはドメイン)]
以下のような返答が返されます。
PING ドメイン or IPアドレス (IPアドレス) 56(84) bytes of data.
64 bytes from IPアドレス: icmp_seq=0 ttl=64 time=0.25 ms

#ネットワークの疎通確認を停止する
Tera Term等のターミナルエミュレータで接続している場合、Ctrl+Cで疎通確認を停止します。

#ネットワークの疎通確認を3回行う
ping -c 3 [IPアドレス(またはドメイン)]

#ドメイン情報取得
dig [ドメイン名]

補足

●ネットワークの疎通確認
ネットワークの接続状態を確認したいホストに対しIPパケットを発行し、そのパケットが正しく届き返答が返ってくるかを確認します。 パケットの送信から返答までの時間が表示されますので、ネットワーク性能を簡易的に確認することもできます。

●ドメイン情報取得
ドメイン情報をDNSから取得します。
dig [@server] domain [query-type] [query-class] [query-option]
といった構文になっています(以下にて簡単に説明)。

@server
検索に利用するDNSサーバーのドメイン名またはIPアドレスを指定

domain
検索するドメイン名を指定

query-type
検索タイプを指定
[検索タイプ]
・a…ネットワークアドレス
・any…全ての情報
・mx…ドメインのメールエクスチェンジ情報
・ns…ネームサーバー
・soa…SOAレコード
・hinfo…ホスト情報
・axfr…ゾーン転送情報
・txt…任意の文字列数

query-class
問い合わせで利用するネットワーククラスを指定

query-option
検索オプション
[検索オプション]
・-x(IPアドレス)…逆アドレス変換を指定する際に通常のIPアドレスを指定
・-f(ファイル名)…バッチモードで処理するファイルを指定
・-T(時間)…バッチモードで実行した際、次の問い合わせをする間隔を指定
・-p(ポート)…利用するポート番号を指定
・-t(検索タイプ)…問い合わせのタイプを指定
・-c(検索クラス)…問い合わせのクラスを指定
・+recurse…再帰的に検索
・+retry(回数)…再試行する回数を指定
・+time(時間)…タイムアウトの時間を指定
・+defname…デフォルトドメイン名を利用
・+search…ドメインサーチリストを利用
・+n(ドメイン名)…デフォルトドメインを指定
・+primary…プライマリサーバーを利用
・+stats…問い合わせの統計を表示
・+header…ヘッダフラグを表示
・+answer…回答項目を表示
・+cmd…コマンドラインを表示

List

関連記事(※当記事と関連性が高いと思われる記事)

Webサーバーに公開鍵認証を導入する

2011/12/30
公開鍵認証
スコア:6 ※スコアの数値が大きいほど、関連性の高い記事です。 公開鍵認証を導入することで、Webサーバーには公開鍵(authorized_keys)、SSH接続時にローカル環境上に秘密鍵(id_rsa)がないとアクセスできなくなり... 続きを読む...

サーバーの設定変更

2012/02/17
サーバーの設定変更
スコア:4 ※スコアの数値が大きいほど、関連性の高い記事です。 php.iniの設定変更 viコマンドでphp.iniを編集 vi /etc/php.ini・・・viでphp.iniを開く ;メモリの上限を変更 memory_lim... 続きを読む...

APCでPHPの処理を高速化

2012/06/12
APCでPHPの処理を高速化
スコア:3 ※スコアの数値が大きいほど、関連性の高い記事です。 PHPアクセレーターAPCとは? PHPアクセレーターとは、PHPのスクリプトを最適化してコンパイルされた状態でデータをキャッシュし、以後同じデータにアクセスがあった際... 続きを読む...

CentOSにPHP5.3をインストール

2012/04/04
CentOSにPHP5.3をインストール
スコア:3 ※スコアの数値が大きいほど、関連性の高い記事です。 以下を前提にインストールするものとします。 CentOS5系でのインストール手順 PHP5.3とMySQLをインストール 基本、デフォルトのリポジトリ経由でインストール... 続きを読む...

CentOSでPHPのバージョンをアップデート

2011/12/23
CentOS
スコア:2 ※スコアの数値が大きいほど、関連性の高い記事です。 CentOSでyumを使ってPHPを5.2系にアップデートする手順 外部のリポジトリでよく聞くのは以下の2つだと思います。 ・Les RPM de Remi ・Utte... 続きを読む...

おすすめ書籍・商品(※当記事と関連性が高いと思われる書籍・商品)

ページの先頭へ