2011年02月13日
■(新人向け) Unixオペレーションの注意点
主に新人向けとして、Unixサーバで作業をする際の注意点を書いておく。
ここに書いてある内容は絶対的なものではないし、会社や現場ごとにルールがあるので、適宜ルールに合わせて実践すれば良い。
ログを取れ
何をやったか、何をやらなかったか、というエビデンスのためにログは必ず残しておく。SSHクライアントによっては毎回自動的にログ取得する設定が可能なので、設定しておくと良いだろう。
作業後に問題が発生した場合に作業内容を確認するためにも使うため、必ずログは取得しておくこと。
(追記) 当たり前だが、コマンドとその出力をペアで取ることに意味がある。
set -x (set verbose) しろ
ログを取得しても、コマンドラインを編集した際には以下のように非常に見づらいものとなってしまう。(がんばれば解析することは出来るが…)
ESC[0mESC[27mESC[24mESC[JESC[1myasu@kiki:~%ESC[0m cat /etc/ESC[Kpa^M ESC[1mCompleting fileESC[0m ESC[Jpam.dESC[27m/ESC[27m ESC[27m ESC[27mESC[JpasswdESC[27m ESC[27m ESC[27m ESC[JpathsESC[27m ESC[27m ESC[27mESC[Jpaths.dESC[27m/ESC[27mESC[JESC[AESC[A ESC[0mESC[27mESC[24mESC[0mESC[27mESC[24m^MESC[13Ccat /etc/paESC[KESC[0mESC[27m ESC[24msswd^M ESC[J##
set -x (bsh系)、set verbose (csh系) を実行することで、コマンド実行時には以下のように出力されるため、作業内容を確実に記録することが出来る。ただし、ワイルドカードの展開結果がそのまま表示されるため、実際に入力したコマンドそのものではない点には注意。
+zsh:2> cat /etc/passwd
最初にやること
hostname
対象のホスト名であるか確認する。対象のサーバを間違えることは無いだろうと思いがちだが、ホスト間違いのオペレーションミスは意外に多い。特に本番機・検証機の両方にアクセス可能な場合や、ホスト名が類似している場合 (ペアになっていて、www01, www02など) には要注意。
ifconfig | grep inet
少々特種な事例だが、同一ホスト名で他のサーバ (IPアドレス) に移転した (またはする可能性がある) 場合には、旧サーバで作業しているつもりで新サーバを変更してしまう可能性がある。IPアドレスも確認することでこのようなミスを避けられる。
date
確認と言うよりは作業開始時刻を記録する目的。ログを確認する場合にも役立つので、ログアウト直後にも打っておくと良い。
都度確認すること
pwd
破壊的な作業かつ相対パスで指定する場合など、作業ディレクトリが重要な場合には、必ずカレントディレクトリを確認する。
date; command...; date
長時間かかるコマンドの前後でdateを打っておくとログから実績時間が分かるため、後々役立つこともある。
バックアップを取れ
何かしらの変更をする際には、必ずバックアップを取得してから行う。
cp -p named.conf named.conf.20110101 ls -ltr named.conf*
crontabの場合:
crontab -l > crontab.20110101
会社や現場によってはバージョン管理システムを利用するなどのルールがあると思うので、その場合はそれに従えば良い。
diffを取れ
編集した内容はdiffを取り、意図した編集だけが行われているか確認する。ログ上に変更点を明示的に残す目的もある。
例:
diff -u named.conf.20110101 named.conf
バージョン管理システムを利用している場合は、rcsdiff, svn diffなど適当な手段を使うこと。
同一性を確認しろ
データを他から移動する際には、破損の可能性を考慮して同一性を確認する。(FTPでうっかりASCIIモードで転送してしまうというのは良くあることだ。)
md5 (md5sum), sha1 (sha1sum), sha256 (sha256sum) などの高度なハッシュ値を求めるコマンドが利用できればそれを使えば良いが、無ければcksumでも構わない。(オペレーションミスを防ぐレベルなら十分。) なお、cksumはその名前に反して単純なチェックサムではなくCRC値を求める。
右クリックでペーストするな
TeraTermやPuTTYなど、Windows用のSSHクライアントでは右クリックでペーストすることが出来るが、この機能は避けた方が良い。右クリックをする際に誤ってマウスを動かしてしまうと、思わぬところをコピー・ペーストしてしまうからだ。
右クリックによるペースト機能は向こうにしておいて、Shift+Ins でペーストするのが一番安全だ。
万全を期すなら、クリップブックでクリップボードの内容を常時表示させておくと良い。クリップブックは Win+R → clipbrd で起動することが出来る。
追記
右クリック
以前はTeraTermで右クリックしたままマウスを動かすと、そのときに選択された領域がコピー・ペーストされて大惨事… だったが、今は "Select only by L button" がデフォルトなので以前ほどの危険ではないようだ。(それでも、右クリックを避けた方が良いのには変わらないが。)
"hostname" or "uname -n"
ブックマークでも指摘を頂いた通り、一般ユーザならどちらでも良いが、rootなら "uname -n" の方が安全。"hostname" コマンドだと、オペレーションミスでホスト名を変更してしまう可能性がある。
クリップブック
Vista以降には無いらしい。適当なフリーソフト探すしかないのか… (thanks id:migimigi, id:nomber3)
ブックマークに反応
(id:pratto) hostname,date,whoamiはプロンプトに出していても、オペレータには作業前に打たせてる。打たせて、出力した文言を確認させてる。そこまでが手順。奴ら、プロンプトなど見ないし、そういう意味なことすら理解できないし。
pwd を打たせるのはこれと同様で、意識して確認するという動作が重要だから。指差し確認・声に出すのも効果あり。
(id:dekaino) history知らないのかな? GNU screenも知らないんだろうな
こういう的外れなことを言われても困るのだが、historyで間に合うような用途ならそれを使えばいいし、GNU screen をインストールして良いならそうすれば良い。まずはもう一度、最初の段落を読んで欲しい。(想像出来ないかも知れないが、世の中にはGNU screenが入っていないシステムも、インストールが許されないシステムもあるのだ。)
- 4023 http://pipes.yahoo.com/pipes/pipe.info?_id=3eebace824bb60a10f13c841c2c64478
- 946 http://b.hatena.ne.jp/
- 860 http://b.hatena.ne.jp/hotentry
- 515 http://b.hatena.ne.jp/hotentry/it
- 457 http://www.ig.gmodules.com/gadgets/ifr?exp_rpc_js=1&exp_track_js=1&url=http://www.hatena.ne.jp/tools/gadget/bookmark/bookmark_gadget.xml&container=ig&view=default&lang=ja&country=JP&sanitize=0&v=5dcf3ea1cff46a06&parent=http://www.google.co.j
- 390 http://reader.livedoor.com/reader/
- 279 http://www.pluto.dti.ne.jp/~rinou/
- 230 http://twitter.com/
- 223 http://d.hatena.ne.jp/
- 203 http://www.sleipnirstart.com/


