No one sees the real me

仮想化PF基盤SE

オペミス・ヒヤリハットについて

エンジニアなら知っておきたい障害報告&再発防止策の考え方

オペミスに関して個人的な考え

・気持ちに訴えかけるだけでは同じミスは再発する
 →ミスを恥じず、堂々と共有し合える文化を作る、出来ないなら自分のミスをさらけ出す
・規律を厳しくすればするほど、変に恐怖心を煽り逆にオペミスは増える
・些細なヒヤリハットに対しても、なぜなぜ分析を行うクセをつける
 →共有し合うのが望ましい、ナレッジが企業の財産になる
・作業内容の理解、誤った際の影響度合いを考えながら手を動かす
 →正直これに尽きる
・顧客影響の無い、内々でリカバリがきくオペミスなんてミスじゃない、反省して終わり、引きずらない
・オペミスした本人を責めるような職場ならお察し企業だと思う

下請け企業がオペミスした場合

・下請け管理職の仕事、報告書提出とあとは元請けとのネゴ
 →元請けの事業がでかければでかいほど、大きく取り上げらてしまうが、
  個人的には異動にさせてもらってちゃら
リスクヘッジ
・大事なのは本人のメンタル

総合として

・オペミスが怖くて運用なんてやってられるか(^ω^ )
・慎重になる局面と、そこまで切り詰める必要が無い局面とを見極めないと、余計な時間を食って作業が進まない
 →判断できないうちは聞いて良いと思うが、自分で決断・判断することが大事

社内の方の発言コピペ(↓他人の言葉であり今後自分版を書く)

運用は何のためにするのか意識は合っているか

  • サービスを継続するための取り組み
    – 機能の修正・改善
    – バグの修正
    – 性能の改善
    – OS/ミドルウェアやアプリケーションのバージョンアップ

開発から運用の流れ

  • 要求の取りまとめ
    – サービス側から (新機能、外部サービスとの連携)
    – 開発側から (保守性の向上、新しいミドルウェアへの対応)
    – 運用側から (障害頻度の軽減、性能向上、可視化)
  • 開発項目の確定と優先度付け
  • リリース時期を確定
  • 開発、テスト
  • リリース

システムの運用は何から始めるか (開発から引き渡された後)

  • サービスの把握
  • 構成の把握 (ハードウェア(仮想)、OS、ミドルウェア、サービス、アプリケーション)
  • 通信の把握 (ネットワークセグメント、IPアドレスプロトコル、データ)
  • リソースの把握 (CPU、メモリ、ディスク、プロセス、ネットワーク)
  • 冗長性の把握 (想定する障害や高負荷、対策)
  • アクセス制御や権限の把握 (ユーザ、グループ、秘密鍵/公開鍵証明書、ドメイン名、期限)
  • ユーザ管理 (追加、削除)
  • 外部接続 (他サービス、アクセスキー、期限)
  • ログ (アクセスログ、エラーログ、アプリケーションログ、ローテーション、保持期間)
  • ベンダー情報 (サポートサイト、連絡窓口、ライセンス)
  • 構成管理 (上記全て)

環境

  • 商用環境
  • ステージング環境
  • 開発環境
  • 環境差分の把握
  • リリース手順
    – リリース対象を確定
    – ステージング環境への配置、テスト
    – 不具合の修正、再配置、テスト
    – 商用環境への反映

監視

  • 何の情報を取得するために監視するか
  • 障害が発生したときに何をするか
  • 監視設定は何を契機として見直すか

ログ

  • ログの種類
    – OSのログ
    – サービスのログ
    ミドルウェアのログ
  • ログレベル (緊急度、詳細度)
  • 分析
    – 入力、出力
    – 処理の前後関係
    – 頻度
    – エラーコード
    – キーワードでの絞り込み – 統計的解析

DB

  • バックアップ、リストア/リカバリ
  • パフォーマンスチューニング
  • リソース監視
  • 権限管理 (ユーザ、パスワード、権限付与、権限剥奪)
  • アクセス制御 (DB、スキーマ、表)
  • 初期化パラメータ
  • ログ

ベンダー情報の追跡

  • バージョンアップ情報 (新機能、削除された機能、互換性)
  • 製品のロードマップ (チケットシステム、公開されたバグ情報、ソースコードの履歴管理情報)
  • 組織としての安定性 (買収、解散、放置)

システムの更新

  • サービスへの影響を把握 (停止、縮退、想定時間)
  • 更新対象を把握 (サーバ、ネットワーク、設定、データ)
  • 作業に影響する監視の抑止
  • 更新作業を実施
  • 監視の再開
  • 構成管理への反映

インシデント管理 (障害からの回復、サービス要求への対応)

  • 既知の障害かどうかの判断
  • 脆弱性の分析と対策
  • ベンダーへの問い合わせ
  • 対応履歴の管理
  • データの受け渡しと消去

レポート

  • サービスからの要求
    – バッチで作成して提供
    – 要求を受けて随時作成して提供
  • 運用レポート
    – サービスの利用状況
    – リソースの利用状況
    – インシデントの発生状況
    稼働率
    – ログ解析
    – 状況の把握から
    — 運用コストの見直し
    — 設備投資の見直し
    — 開発項目の優先度の変更

以上を踏まえて、普段何をするか (運用メンバーの1日)

  • 日次
  • 週次
  • 月次

他にいい方法ないかな?

[root@naoki105 20170807]# cat a
-----mon1-----

192.168.0.1
192.168.11.1

-----mon2-----

192.168.0.2
192.168.11.2

-----mon3-----

192.168.0.3
192.168.11.3
[root@naoki105 20170807]#
[root@naoki105 20170807]# csplit a /^-----.*/ {*} | for i in `ls -ltr xx* | awk '{ print $9}' | sort -n` ; do paste -d, -s $i ; done

-----mon1-----,,192.168.0.1,192.168.11.1,
-----mon2-----,,192.168.0.2,192.168.11.2,
-----mon3-----,,192.168.0.3,192.168.11.3
[root@naoki105 20170807]#
[root@naoki105 20170807]#

体調不良の数々(仮病含む)

2015年1月~2017年8月31日

日時 種別 日数 理由
2015/2/13 欠勤 1日 体調不良
2015/4/9 欠勤 1日 体調不良
2015/4/21 欠勤 1日 体調不良
2015/5/28 欠勤 1日 体調不良
2015/6/12 欠勤 1日 体調不良
2015/7/24 午前半休 0.5日 体調不良
2015/7/31 有給休暇 1日 体調不良
2015/10/15 午前半休 0.5日 体調不良(すいません)
2015/10/21 有給休暇 1日 体調不良
2015/10/23 午前半休 0.5日 体調不良
2015/12/3 欠勤 1日 体調不良
2015/12/11 欠勤 1日 体調不良
2016/1/21 欠勤 1日 体調不良
2016/6/22 有給休暇 1日 体調不良
2016/6/24 有給休暇 1日 体調不良(メモ:偏頭痛)
2016/8/4 午前半休 0.5日 腹痛のため午前半休
2016/9/28 有給休暇 1日 体調不良
2016/11/15 有給休暇 1日 体調不良
2017/2/22 午前半休 0.5日 体調不良のため
2017/2/28 午前半休 0.5日 体調不良のため
2017/3/29 有給休暇 1日 通院のため
2017/4/13 午前半休 0.5日 体調不良
2017/4/21 有給休暇 1日 体調不良
2017/5/9 有給休暇 1日 体調不良
2017/6/30 有給休暇 1日 体調不良
2017/8/25 有給休暇 1日 病院

[2017/08/24]初てんかん発作 [27歳9ヵ月]

<事象>
2017/08/24 23:30頃
自宅アパート一室で
てんかん発作を起こし意識を失い、救急搬送された
08/25 1日入院し退院

<同居している彼女の証言>
・白眼を剥き、口から泡を出していた
・頭部がガクガクと痙攣していた
・呼びかけると眼を開き、その後すぐ眼を閉じた

<自身の記憶>
・救急隊員の声が聞こえたが何の話しかは記憶にない
・異常なほどの吐き気があった
・熱がいきなり出始めた

<検査>
・CT
・脳波検査
・血液検査
→すべて異常なし

<処置>
・点滴(水分補給)
(・看護)

<原因>
複数の要因が重なったことで発症したと考える
・第一は、睡眠不足
 3~4時間程度の睡眠が1~2週続いていた
・第二は、過労
 脳が活動状態で休まらなかった(≒ストレス負荷)
・第三は、自己要因
 栄養不足/運動不足
 数年間運動は皆無、基礎体力がない
 食事も不規則で適当

<対策>
・睡眠時間を意識して確保する
・てんかん発作防止で薬を飲む
 →副作用があるので続くか不明
・意識して残業を抑止する(20:00、遅くても21:00を目途にする)
・食べるものを意識する
 →糖質、甘いものを避ける、缶コーヒーの量を減らす、食べ方
・上記が担保できてから運動不足を解消する活動

<所感>
・生まれて初めてのことでびびった
・目撃して119してくれた彼女はもっとびびったと思う
・ストレス負荷は自覚無し、睡眠不足のみ自覚有り
 →睡眠不足が続く≒脳が休まっていない、脳細胞?

<精神科医の話し>
・患者の中にも少なからず事例有り、検査では異常なくても起きる
・リラックスの重要性、脳の興奮を抑える
・一に睡眠、二に栄養、三に運動

お遊び1

[root@naoki105 ~]# for i in {1..10} ; do uptime ; sleep 2; done | while read LINE ; do echo $LINE | awk '{ print $1,"----",$10"(1m)",$11"(5m)",$12"(15m)" }' ; done
10:32:49 ---- 2.53,(1m) 0.70,(5m) 0.24(15m)
10:32:51 ---- 2.53,(1m) 0.70,(5m) 0.24(15m)
10:32:53 ---- 2.57,(1m) 0.74,(5m) 0.25(15m)
10:32:55 ---- 2.57,(1m) 0.74,(5m) 0.25(15m)
10:32:57 ---- 2.60,(1m) 0.78,(5m) 0.27(15m)
10:33:00 ---- 2.60,(1m) 0.78,(5m) 0.27(15m)
10:33:02 ---- 2.72,(1m) 0.83,(5m) 0.29(15m)
10:33:04 ---- 2.72,(1m) 0.83,(5m) 0.29(15m)
10:33:06 ---- 2.72,(1m) 0.83,(5m) 0.29(15m)
10:33:08 ---- 2.90,(1m) 0.90,(5m) 0.31(15m)
[root@naoki105 ~]#

メモリ負荷メモ

① 負荷コマンド

[root@naoki105 ~]# /dev/null < $(yes)

② ①実行後

[root@naoki105 0816]# vmstat 2
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 1  0      0 398444   5544  31156    0    1     1     2   38    1  0  0 100  0  0
 1  0      0 198276   5544  31156    0    0     0     0 1015 50072 72 28  0  0  0
 1  2  30500  63228    604   7484    0 15250     2 15250  992 44311 73 27  0  1  0
 3  1 162216  65468    456   5180    0 65692   256 65694  691 24133 39 19  0 41  0
 1  1 319128  63024    144   4724    0 78454    42 78454  991 37973 60 23  0 17  0
 0  3 508924  49216    144   4700    0 95062     0 95062 1167 44649 71 28  0  1  0
 9  1 574460  71460    144   5924   32 32770   630 32770  475 12407 50 36  0 14  0
 4  0 617280  49228     76   5636    0 21412   104 21420  787 33117 73 27  0  0  0
 3  0 693684  53428     76   5672    0 38202     0 38202  600 16031 57 40  0  3  0
 3  0 768284  61584     76   5628    0 37300     0 37300  539 14657 48 35  0 17  0
 2  0 820956  50084     76   5628  344 26384   344 26384  480 14770 60 37  0  4  0
 4  0 874660  49188     76   5660    0 26852     0 26852  420 11574 54 32  0 15  0
 5  4 922060  49228     76   5660   32 23696    32 23696  117 2326  8  7  0 85  0
14  2 981336  63416     76   5540   16 29646   130 29646  289 3792 20 45  0 35  0
 7  0 1018664  51480     76   6708  106 18688   702 18688  731 28244 69 29  0  2  0
12  1 1099972  53408     88   6740   16 40656    22 40656  495 10852 57 43  0  0  0
 3  2 1204784  65844    176   6348  592 52966   636 52966  505 13908 60 38  0  2  0
 1  0 1211648  66380    304   6732   48 3478   392  3478  551 18090 63 34  0  3  0
 3  0 1270168  53688    436   6496  112 29328   296 29328  544 17567 61 35  0  4  0
 7  0 1330900  48964    436   6520   16 30432    16 30432  579 14953 60 40  0  0  0
 6  0 1413192  64868    436   5824    0 41146     0 41146  609 14605 60 40  0  0  0
^C
[root@naoki105 0816]#
[root@naoki105 0816]# free -m
             total       used       free     shared    buffers     cached
Mem:           980        183        796          0          1         14
-/+ buffers/cache:        168        812
Swap:         1983        122       1861
[root@naoki105 0816]#

①をとめたあともswpd は残り続ける

[root@naoki105 0816]# vmstat 2
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 1  0 125380 815796   1836  14416    0    3     1     4   38    3  0  0 100  0  0
^C

② swapを無効化にする

[root@naoki105 ~]# swapoff -a
[root@naoki105 ~]#

③ ②実行後

[root@naoki105 0816]# free -m
             total       used       free     shared    buffers     cached
Mem:           980        308        671          2          2         21
-/+ buffers/cache:        284        695
Swap:            0          0          0
[root@naoki105 0816]#
[root@naoki105 0816]# vmstat 2
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 1  0      0 688216   2348  22028    0    3     1     4   38    3  0  0 100  0  0
 0  0      0 688160   2348  22028    0    0     0     0   46   82  0  1 99  0  0
^C
[root@naoki105 0816]#

④ swap有効に戻す

[root@naoki105 ~]# swapon -a
[root@naoki105 ~]#

シェル1

[root@naoki105 0816]# cat ip_sam
255.255.255.255
999.999.999.999
111.111.000.111
000.000.000.111
111.111.111.111
[root@naoki105 0816]#
[root@naoki105 0816]# cat ip_sam | grep -E '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' | while read line ; do echo $line | grep -v ^000 ; done | tee result
255.255.255.255
999.999.999.999
111.111.000.111
111.111.111.111
[root@naoki105 0816]#
[root@naoki105 0816]# diff ip_sam result
4d3
< 000.000.000.111
[root@naoki105 0816]#

CPU1

CPU負荷を掛ける

↓ 手軽い

# yes | tac

↓ 足りないならこんな感じに。killする必要ない手軽感

#for i in seq 1 100 ; do yes > /dev/null ; done

[root@localhost mariadb]# vmstat 2
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
12  0      0 120916 128688 421664    0    0     0     0 1025  645 100  1  0  0  0
12  0      0 120916 128688 421664    0    0     0     0 1019  632 99  1  0  0  0
12  0      0 120916 128688 421664    0    0     0     0 1019  622 99  1  0  0  0
12  0      0 120916 128688 421664    0    0     0     0 1024  647 100  1  0  0  0
13  0      0 120916 128692 421664    0    0     0     6 1012  646 100  1  0  0  0
13  0      0 120916 128692 421664    0    0     0     0 1010  637 99  1  0  0  0
13  0      0 120916 128692 421664    0    0     0     0 1025  665 99  1  0  0  0
 1  0      0 122968 128692 421708    0    0    22     0  322  258 29  1 71  0  0
 0  0      0 122968 128692 421708    0    0     0     0   58   93  0  1 100  0  0
 0  0      0 122968 128692 421708    0    0     0     0   41   76  1  0 100  0  0
 0  0      0 123108 128696 421708    0    0     0     6   56   84  0  2 98  0  0
 0  0      0 123108 128696 421708    0    0     0     0   41   75  0  0 100  0  0
 0  0      0 123108 128696 421708    0    0     0     0   39   69  0  1 100  0  0
 0  0      0 123124 128696 421708    0    0     0     0   40   72  0  0 100  0  0
^C
[root@localhost mariadb]#

↓ (メモ)Diks I/O 確認 vmstat -d 2

grep -o -P

[root@naoki105 0816]# grep -oP "(?<=「).+(?=」)" samplist
aiueookami
matane
[root@naoki105 0816]# cat samplist
「aiueookami」


「matane」

[root@naoki105 0816]# cat sam3
[naoki]

        [yuuka]

--------------------------------------
[kento]
[root@naoki105 0816]#

結果

[root@naoki105 0816]# grep -oP '(?<=\[).+(?=\])' sam3
naoki
yuuka
kento
[root@naoki105 0816]#
``
  • grep -oP “(?<=[).+(?=])” hogehoge *

UP

出来ないから、やらない、任されない

なら、いつ出来るようになるのか

半年後?1年後?3年後? できないから、やらないっていってたら一生できないですは

・追い込まれないと動かない
・他の人がやってくれる
・そもそも追い込まれない環境
・そもそも任されない


いつになっても育たない

成長したい・変わりたい・努力をするにあたって最も弊害となる壁は、
他者の自分に対する批判

→必ず邪魔が入る(生意気だの、意識高い系だの、嘲笑れたり) →これを乗り越えなければ、現状のまま
→他人の目を気にしないようにする、は不可能
 →他人の批判的な言動を受け入れつつ、自分のやり方を貫く




ポイント

  1. 能動的に動けているか
  2. +α(120%)のアウトプットを意識しているか
  3. できる他者と比較していないか(劣等感を感じていないか、己の実力を卑下する必要は無い)
  4. 己に嘘をついていないか
  5. 今自分が出来ないスキルを自覚しているか、出来るようになりたいと思うのか
  6. 他人が自分に求めるレベルを達成して満足していないか

挫折のレベルが高ければ高いほど、乗り越えたときの自分は強い
失敗するなら大失敗、大泣きして数ヶ月休んで、辞表だすぐらいのレベルで
自分を追い込んで、反省して、猛勉強して、実践して、その先に己の成長が有るのではないか

己がそれでいいと思うなら、他者が何と言おうと関係ない
己がエンジニアと思うならば、堂々とエンジニアと名乗ればいいように
己の評価も他人が決めることではない
己が決めること


・・・技術スキル云々以前の話し、わたしの課題

ISOイメージからyumする

[root@localhost yum.repos.d]# pwd
/etc/yum.repos.d
[root@localhost yum.repos.d]#
[root@localhost yum.repos.d]# ls
CentOS-Base.repo  CentOS-Debuginfo.repo  CentOS-Media.repo    CentOS-Vault.repo
CentOS-CR.repo    CentOS-fasttrack.repo  CentOS-Sources.repo
[root@localhost yum.repos.d]#
[root@localhost yum.repos.d]# cat CentOS-Media.repo
# CentOS-Media.repo
#
#  This repo can be used with mounted DVD media, verify the mount point for
#  CentOS-7.  You can use this repo and yum to install items directly off the
#  DVD ISO that we release.
#
# To use this repo, put in your DVD and use it with the other repos too:
#  yum --enablerepo=c7-media [command]
#
# or for ONLY the media repo, do this:
#
#  yum --disablerepo=\* --enablerepo=c7-media [command]

[c7-media]
name=CentOS-$releasever - Media
baseurl=file:///media/CentOS/
        file:///media/cdrom/
        file:///media/cdrecorder/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

[root@localhost yum.repos.d]#
[root@localhost yum.repos.d]# mkdir /media/cdrom
[root@localhost yum.repos.d]#
[root@localhost yum.repos.d]# mount /dev/cdrom /media/cdrom/
mount: /dev/sr0 is write-protected, mounting read-only
[root@localhost yum.repos.d]#
[root@localhost yum.repos.d]# ls /media/cdrom/
CentOS_BuildTag  GPL       LiveOS    RPM-GPG-KEY-CentOS-7
EFI              images    Packages  RPM-GPG-KEY-CentOS-Testing-7
EULA             isolinux  repodata  TRANS.TBL
[root@localhost yum.repos.d]#
[root@localhost yum.repos.d]# yum --disablerepo=* --enablerepo=c7-media list
Loaded plugins: fastestmirror, langpacks
file:///media/CentOS/repodata/repomd.xml: [Errno 14] curl#37 - "Couldn't open file /media/CentOS/repodata/repomd.xml"
Trying other mirror.
c7-media                                                 | 3.6 kB     00:00
c7-media/group_gz              FAILED
file:///media/CentOS/repodata/436345f4b666f0a461d479ccfabc2c22823d4f2173c2653e5250fea62f0afe98-c7-x86_64-comps.xml.gz: [Errno 14] curl#37 - "Couldn't open file /media/CentOS/repodata/436345f4b666f0a461d479ccfabc2c22823d4f2173c2653e5250fea62f0afe98-c7-x86_64-comps.xml.gz"
Trying other mirror.
c7-media/group_gz              FAILED
file:///media/cdrecorder/repodata/436345f4b666f0a461d479ccfabc2c22823d4f2173c2653e5250fea62f0afe98-c7-x86_64-comps.xml.gz: [Errno 14] curl#37 - "Couldn't open file /media/cdrecorder/repodata/436345f4b666f0a461d479ccfabc2c22823d4f2173c2653e5250fea62f0afe98-c7-x86_64-comps.xml.gz"
Trying other mirror.
(1/2): c7-media/group_gz                                   | 155 kB   00:00
(2/2): c7-media/primary_db                                 | 2.8 MB   00:00
Loading mirror speeds from cached hostfile
 * c7-media:
Installed Packages
GConf2.x86_64                           3.2.6-8.el7                    @anaconda
ModemManager.x86_64                     1.1.0-8.git20130913.el7        @anaconda
ModemManager-glib.x86_64                1.1.0-8.git20130913.el7        @anaconda
NetworkManager.x86_64                   1:1.0.6-27.el7                 @anaconda
NetworkManager-adsl.x86_64              1:1.0.6-27.el7                 @anaconda
NetworkManager-glib.x86_64              1:1.0.6-27.el7                 @anaconda
NetworkManager-libnm.x86_64             1:1.0.6-27.el7                 @anaconda

~~~

[root@localhost yum.repos.d]# yum --disablerepo=* --enablerepo=c7-media install -y git
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * c7-media:
Resolving Dependencies
--> Running transaction check
---> Package git.x86_64 0:1.8.3.1-5.el7 will be installed
--> Processing Dependency: perl-Git = 1.8.3.1-5.el7 for package: git-1.8.3.1-5.el7.x86_64
--> Processing Dependency: perl(Term::ReadKey) for package: git-1.8.3.1-5.el7.x86_64
--> Processing Dependency: perl(Git) for package: git-1.8.3.1-5.el7.x86_64
--> Processing Dependency: perl(Error) for package: git-1.8.3.1-5.el7.x86_64
--> Running transaction check
---> Package perl-Error.noarch 1:0.17020-2.el7 will be installed
---> Package perl-Git.noarch 0:1.8.3.1-5.el7 will be installed
---> Package perl-TermReadKey.x86_64 0:2.30-20.el7 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
 Package                Arch         Version               Repository      Size
================================================================================
Installing:
 git                    x86_64       1.8.3.1-5.el7         c7-media       4.3 M
Installing for dependencies:
 perl-Error             noarch       1:0.17020-2.el7       c7-media        32 k
 perl-Git               noarch       1.8.3.1-5.el7         c7-media        53 k
 perl-TermReadKey       x86_64       2.30-20.el7           c7-media        31 k

Transaction Summary
================================================================================
Install  1 Package (+3 Dependent packages)

Total download size: 4.4 M
Installed size: 22 M
Downloading packages:
warning: /media/cdrom/Packages/git-1.8.3.1-5.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY
Public key for git-1.8.3.1-5.el7.x86_64.rpm is not installed
--------------------------------------------------------------------------------
Total                                               12 MB/s | 4.4 MB  00:00
Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
Importing GPG key 0xF4A80EB5:
 Userid     : "CentOS-7 Key (CentOS 7 Official Signing Key) <security@centos.org>"
 Fingerprint: 6341 ab27 53d7 8a78 a7c2 7bb1 24c6 a8a7 f4a8 0eb5
 Package    : centos-release-7-2.1511.el7.centos.2.10.x86_64 (@anaconda)
 From       : /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : 1:perl-Error-0.17020-2.el7.noarch                            1/4
  Installing : perl-TermReadKey-2.30-20.el7.x86_64                          2/4
  Installing : perl-Git-1.8.3.1-5.el7.noarch                                3/4
  Installing : git-1.8.3.1-5.el7.x86_64                                     4/4
  Verifying  : git-1.8.3.1-5.el7.x86_64                                     1/4
  Verifying  : 1:perl-Error-0.17020-2.el7.noarch                            2/4
  Verifying  : perl-Git-1.8.3.1-5.el7.noarch                                3/4
  Verifying  : perl-TermReadKey-2.30-20.el7.x86_64                          4/4

Installed:
  git.x86_64 0:1.8.3.1-5.el7

Dependency Installed:
  perl-Error.noarch 1:0.17020-2.el7         perl-Git.noarch 0:1.8.3.1-5.el7
  perl-TermReadKey.x86_64 0:2.30-20.el7

Complete!
[root@localhost yum.repos.d]#

sed コマンド

# echo "naoki(27)" | sed -e "s/^.*(\(.*\))/\1/"  
27  

# echo "naoki(27)" | sed -e "s/^\(.*\).*(.*).*$/\1/g"  
naoki  

# echo "yamada(27)tarou(29)" | sed -e "s/^.*(.*).*(\(.*\))/\1/g"  
29  

# echo "yamada(27)tarou(29)" | sed -e "s/^\(.*\)(.*).*(.*)/\1/g"  
yamada  

# echo "yamada(27)tarou(29)" | sed -e "s/^.*(\(.*\))\(.*\)(.*)/\2 not \1/g"  
tarou not 27  

# echo "Received: from iidmxi01.alpha-prm.jp ([157.205.203.72])" | sed -e "s/.*\[\(.*\)\].*$/\1/g"  
157.205.203.72