SlideShare a Scribd company logo
事故らないための
UNIX(Linux)オペレーション
2014年7月11日
エスキュービズム・テクノロジー社内勉強会
CAUTION
会社や現場によってルールがあるので
ここに書いてあることが唯一解ではないです。
たまに聞く話(弊社じゃないです)
本番環境と検証環境を間違えた
→Disk Fullでした
あの時自分が行ったオペレーション分からない
MySQLが起動しないのでMySQL周りばかり調べること1h…
ログインしたら最初にすべきこと
各種情報を見るクセをつける
uname -a
date
cat /etc/redhat-release
!
df -h
fdisk -l
ifconfig -a
!
netstat -lntp(lnup)
ps -ef(-aux)
top
sysstatの各種コマンド
UNIXコマンドは沢山あるので「その場しのぎ」で覚えがちだが、この辺りが定番か
※
※
※今後ipコマンドに置き換わる
基本情報見る系コマンド(1)
# uname -a
ホスト名:
 対象サーバを間違えていないか
kernelのバージョン:
 たまにkernelのバージョンを選ぶミドルウェアがある
RedHat系OSの場合、OSのメジャーバージョン:
 RHEL/CentOSの場合、6.xだとel6、5.xだとel5になる
64bit OSか32bit OSか:
 32bitOSの場合、ミドルウェアが使用できるメモリが4GBに制限される
ホスト名だけならhostnameコマンドでも確認できるが、
ホスト名を書き換えてしまう可能性あるので使わないほうが良い
Linux websrv01 2.6.32-358.el6.x86_64 (以下略)
ユーザ:
 $は一般ユーザ、#はroot
基本情報見る系コマンド(2)
# cat /etc/redhat-release
RHEL互換OSの場合のOSバージョン:
 5.xと6.xで必要なRPMが異なる
 5.x →el5.x86_64
 6.x →el6.x86_64
 7.x ←el7.x86_64
!
 Debianの場合は cat /etc/debian-release
CentOS release 6.4 (Final)
# date
日時:
 日付がズレていないか。ズレてるとECサイトの場合クレカ決済通らなかったり、
 複数サーバのログの突合が大変
2014年 7月 11日 金曜日 14:26:34 JST
タイムゾーン:
 AWSの海外リージョン等海外のサーバの場合JSTになっておらず、
 フロント側Webサイトの処理にも影響出る
ディスク・NW・プロセス関連コマンド
# ifconfig -a
Network Interfaceの数とIPアドレスの把握:
 MySQLがeth1のIPでListenしていないので繋がらない等のトラブル時に有用
 IaaSだと2つ前後が多いと思うが、5つ6つNICがある場合もある
略
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 28G 8.4G 18G 33% /
tmpfs 1004M 0 1004M 0% /dev/shm
/dev/sda1 504M 105M 375M 22% /boot
/dev/sdb1 197G 7.8G 180G 5% /var/lib/mysql
ディスク使用容量:
 ディスクフルによるトラブルはこのコマンドですぐ分かる
外部ディスク有無:
 システム構成が把握できる。例)MySQLのデータディレクトリは外部ディスク
 mountされていないディスクはfdisk -lで分かる
ディスク・NW・プロセス関連コマンド
# ps -ef
サーバ内で動作しているプロセスを把握:
 Apache再起動したらソースコンパイルだったので違うプロセスだった
# netstat -lntp(-lnup)
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 24736/nginx
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 2021/sshd
tcp 0 0 10.100.79.29:3306 0.0.0.0:* LISTEN 2532/mysqld
ListenしているポートとIPアドレスの確認:
 Apache再起動したら8080でListenしてたWebDAVも落ちた←防止
 MySQLがPrivate IPでしかListenしておらず、死活監視できなかった←防止
!
 TCPの場合は-lntp、UDPの場合は-lnup
ディスク・NW・プロセス関連コマンド
sysstatの各種コマンド
メモリ、CPU使用率を10分毎に1ヶ月分参照可能
# top
「shift+m」でメモリの使用率が高い順にソート
「shift+o」で任意のフィールドでソート
「u」で任意のユーザのプロセスのみ表示
「1」でCPUコアとそのコアごとの利用率
sar CPU使用率の記録
sar -u メモリ使用率の記録
sar -f /var/log/sa/sa17 17日の記録を表示
sar -P ALL CPUコアとそのコア毎の使用率の記録
iostat、vmstat、mpstat
統計情報参照
非推奨になっているコマンドがある
非推奨 置き換え候補
arp ip n (ip neighbor)
ifconfig ip a (ip addr), ip link, ip -s (ip -stats)
netstat ss, ip route (for netstat-r), ip -s link (for netstat -i), ip maddr (for netstat-g)
route ip r (ip route)
http://understeer.hatenablog.com/entry/2012/03/24/184346
ログはとりましょう
例えばPoderosaだと意識しなくても全ログ取得可能
フォーマットも読みやすい
SSHの鍵型式がOpenSSH型式ではないので、サーバ台数増えるとちょっと辛い
Poderosa以外の各クライアントもロギングの機能ある
あとはtypescriptコマンド使うとか
サーバ間違い、誤操作防止
・ログイン時にuname -aコマンド実行
!
・コマンド実行時にプロンプトのホスト名表示を確認
!
・検証と本番環境でSSHクライアントを分ける
!
・tmux(後述)やscreenでwindowに名前付けとく
!
・root作業しない
!
!
・普段触らない環境でのミドルウェア再起動はリスクある
!
Apache再起動時にSSL秘密鍵のパスフレーズ求められる
MySQL再起動したら刺さった(IOが一気に上がった)
よく知ってる人に聞くほうがよい
普段は一般作業で作業し、必要な場合はsudo、もしくはsu -でroot昇格
サーバ間違い、誤操作防止(2)
キータッチ速い人は大体速そうに見えるだけで、
ミスタッチ連発で実はそんなに速くないし、急いだところで全体の時間に影響なし
急がない
障害発生時の対応
クライアントと連絡を密接に
復旧までに時間が掛かるなら中間報告出す
!
インフラ屋さんだと「発生報」「経過第n報」「復旧報」「報告」
みたいにガンガン連絡飛んできます
先輩だろうが上司だろうが「使える」ものは使う
普段からこの人に聞けば解決する、
この人に間に入ってクライアントと連絡取ってもらう
などイメージしておく
tmux
ターミナルマルチプレクサ
手元のマシンに入れる場合
・複数サーバに接続する場合に名前つけて間違えないように
・デスクトップのカオス化防止
・複数台のリモートサーバに同一コマンド実行
作業対象サーバに入れる場合
・nohupコマンドいらず
・他の人の作業状況共有
言うまでもなく本番環境に勝手にtmux入れたらダメです
手元のマシンに入れる場合と対象サーバに入れる2パターンある
screen使ってる人もいます
各種ディストリビューション
日経Linux 2014年5月号より
標準デスク
トップ環境
パッケージ管理
カーネル
Ubuntu 13.10 Debian 7.4 Fedora 20 CentOS 6.5
OpenSUSE
13.1
Unity 7 GNOME 3 GNOME 2 KDE 4
APT YUM
Zypper/
YaST
Linuxカーネル
入門 汎用 先進 安定 欧州
RedHat
Enterprise
Linux
SUSE Linux
Enterprise
商用派生
先進機能の
テスト
機能互換 成果を取り入れ
各種ディストリビューション
RedHat系OSの場合のミドルウェアインストール
yum install(update|remove|search)
yum localinstall
rpm -ivh(-Uvh)
ソースコンパイル
・インターネットに接続可能
・レポジトリが提供されている
・バージョンなどが特殊(例:dev版)でない
・必要に応じてサードパーティのレポジトリ使う(remi、epel等)
・インターネットに接続可能
・レポジトリが提供されていない
・RPMファイルが手元にある
・依存関係が複雑なのでrpmコマンドでは辛い
・インターネットに接続不可
・レポジトリが提供されていない
・RPMファイルが手元にある
・最新バージョンを使いたい
・アドオンなどがソースコンパイルでないと入らない
CentOS 7出ました
コマンドがいろいろ変更になっている…らしい
操作 SysV Init Systemd
起動 /etc/init.d/sshd start systemctl start sshd
終了 /etc/init.d/sshd stop systemctl stop sshd
強制終了 PID探してkill -9 systemctl kill -s 9 sshd
再起動 /etc/init.d/sshd restart systemctl restart sshd
設定反映 /etc/init.d/sshd reload systemctl reload sshd
状態取得 /etc/init.d/sshd status systemctl status sshd
自動起動を有効 chkconfig sshd on systemctl enable sshd
自動起動を無効 chkconfig sshd off systemctl disable sshd
自動起動の状態確認 chkconfig --list sshd systemctl is-enabled sshd(status でも表示される)
サービス一覧の表示 ls /etc/init.d systemctl --type service
http://blog.yuryu.jp/2014/07/systemd-quick-guide.html

More Related Content

PPTX
Systemd入門
PDF
[Basic 8] プロセスとスレッド / 入出力 / シェル
PDF
[Basic 9] 並列処理 / 排他制御
PDF
[Basic 7] OS の基本 / 割り込み / システム コール / メモリ管理
PDF
Linux デスクトップ環境のセキュリティを考えてみる
PDF
【学習メモ#1st】12ステップで作る組込みOS自作入門
PDF
VPSもDesktopもYaSTを使ってLinuxをらくらく設定―ファイルサーバー構築・管理編
PDF
XenServerとZFSストレージでサーバ仮想化 - OSC2011 Tokyo/Spring 自宅SAN友の会(後半)
Systemd入門
[Basic 8] プロセスとスレッド / 入出力 / シェル
[Basic 9] 並列処理 / 排他制御
[Basic 7] OS の基本 / 割り込み / システム コール / メモリ管理
Linux デスクトップ環境のセキュリティを考えてみる
【学習メモ#1st】12ステップで作る組込みOS自作入門
VPSもDesktopもYaSTを使ってLinuxをらくらく設定―ファイルサーバー構築・管理編
XenServerとZFSストレージでサーバ仮想化 - OSC2011 Tokyo/Spring 自宅SAN友の会(後半)

What's hot (20)

PDF
Oftec Lightning Talk 第7回 最近触ったLinuxディストリビューションの紹介
PDF
Linuxの基礎勉強会
PDF
【学習メモ#8th】12ステップで作る組込みOS自作入門
POTX
LinuxをインストールしてWebサーバーを立ち上げてみよう
PDF
【学習メモ#9th】12ステップで作る組込みOS自作入門
PDF
【学習メモ#6th】12ステップで作る組込みOS自作入門
PDF
Osc201703 tokyo-clonezilla-v1.2 j
PDF
openSUSE におけるパッケージ管理入門
PDF
OpenStack & SELinux
PDF
Ylug 110th kpatch code reading
PPT
FreeBSDで行こう for small server
PDF
FreeBSD 12.1 RELESE
PDF
LinuxをインストールしてWebサーバーを立ち上げてみよう【OSC2017 Tokyo/Fall】
PDF
hbstudy# 28 SELinux HandsOn 公開版
PDF
【学習メモ#11th】12ステップで作る組込みOS自作入門
PPTX
specific kill
PDF
覚えておきたい! zypper コマンドの使い方
PDF
CentOS7をインストールして遊ぶのだ
PDF
Ubuntuで最新パッケージを導入
PDF
Eucalyptus on OpenStack
Oftec Lightning Talk 第7回 最近触ったLinuxディストリビューションの紹介
Linuxの基礎勉強会
【学習メモ#8th】12ステップで作る組込みOS自作入門
LinuxをインストールしてWebサーバーを立ち上げてみよう
【学習メモ#9th】12ステップで作る組込みOS自作入門
【学習メモ#6th】12ステップで作る組込みOS自作入門
Osc201703 tokyo-clonezilla-v1.2 j
openSUSE におけるパッケージ管理入門
OpenStack & SELinux
Ylug 110th kpatch code reading
FreeBSDで行こう for small server
FreeBSD 12.1 RELESE
LinuxをインストールしてWebサーバーを立ち上げてみよう【OSC2017 Tokyo/Fall】
hbstudy# 28 SELinux HandsOn 公開版
【学習メモ#11th】12ステップで作る組込みOS自作入門
specific kill
覚えておきたい! zypper コマンドの使い方
CentOS7をインストールして遊ぶのだ
Ubuntuで最新パッケージを導入
Eucalyptus on OpenStack
Ad

Viewers also liked (20)

PDF
iOS開発豆知識_エスキュービズム勉強会20141006
PDF
ウェアラブルコンピューターが変える小売のミライ_エンジニア勉強会20140425
PDF
【エンジニア勉強会】品質ってなんなのさ
PDF
Developer Summit 2016 参加してきました。
PDF
エンジニア勉強会_DECIDE
PDF
【エンジニア勉強会】MicrosoftAzure.
PDF
iOSとwin8_エンジニア勉強会20131106
PPTX
Yii c orange エンジニア勉強会20140129
PDF
様々なEntry system,register system エンジニア勉強会20140108
PDF
エンジニア勉強会_Node.js
PDF
POSとステートマシン_エンジニア勉強会20131127
PDF
メモリ管理の話_エスキュービズム勉強会20140926
PDF
Sensu graphite_エンジニア勉強会20140205
PDF
暗号理論_エンジニア勉強会20140509
PDF
Azure container service上でコンテナベースでオートスケールの検証をしてみた
iOS開発豆知識_エスキュービズム勉強会20141006
ウェアラブルコンピューターが変える小売のミライ_エンジニア勉強会20140425
【エンジニア勉強会】品質ってなんなのさ
Developer Summit 2016 参加してきました。
エンジニア勉強会_DECIDE
【エンジニア勉強会】MicrosoftAzure.
iOSとwin8_エンジニア勉強会20131106
Yii c orange エンジニア勉強会20140129
様々なEntry system,register system エンジニア勉強会20140108
エンジニア勉強会_Node.js
POSとステートマシン_エンジニア勉強会20131127
メモリ管理の話_エスキュービズム勉強会20140926
Sensu graphite_エンジニア勉強会20140205
暗号理論_エンジニア勉強会20140509
Azure container service上でコンテナベースでオートスケールの検証をしてみた
Ad

More from エンジニア勉強会 エスキュービズム (20)

PDF
エスキュービズム新技術発表資料
PDF
小売りにおけるAIの可能性
PDF
React Redux Redux-Saga + サーバサイドレンダリング
PDF
Go言語によるWebアプリケーション開発
PDF
機械学習ライブラリ : TensorFlow
PDF
2016 新人研修 基本技術講座 (1)
PDF
Dockerを用いたマイクロサービスについて
PDF
Azureで動いている機械学習のいろいろについて
PDF
アルゴリズムとデータ構造(初歩)
PDF
何故エンジニアはテストをしないのか
PDF
PDF
【エンジニア勉強会】PMやってみた
PDF
Dockerを社内で使うために
PDF
PDF
Go言語オーバービュー201507
エスキュービズム新技術発表資料
小売りにおけるAIの可能性
React Redux Redux-Saga + サーバサイドレンダリング
Go言語によるWebアプリケーション開発
機械学習ライブラリ : TensorFlow
2016 新人研修 基本技術講座 (1)
Dockerを用いたマイクロサービスについて
Azureで動いている機械学習のいろいろについて
アルゴリズムとデータ構造(初歩)
何故エンジニアはテストをしないのか
【エンジニア勉強会】PMやってみた
Dockerを社内で使うために
Go言語オーバービュー201507

事故らないためのUnix(linux)オペレーション エスキュービズム勉強会0711