(新人向け) Unixオペレーションの注意点 – Magical Diary

主に新人向けとして、Unixサーバで作業をする際の注意点を書いておく。

ここに書いてある内容は絶対的なものではないし会社現場ごとにルールがあるので、適宜ルールに合わせて実践すれば良い。

ログを取れ

何をやったか、何をやらなかったか、というエビデンスのためにログは必ず残しておく。SSHクライアントによっては毎回自動的にログ取得する設定が可能なので、設定しておくと良いだろう。

f:id:hirata_yasuyuki:20110213210741p:image

作業後に問題が発生した場合に作業内容を確認するためにも使うため、必ずログは取得しておくこと。

(追記) 当たり前だがコマンドとその出力をペアで取ることに意味がある。

set -x (set verbose) しろ

ログを取得しても、コマンドライン編集した際には以下のように非常に見づらいものとなってしまう。(がんばれば解析することは出来るが…)

ESC[0mESC[27mESC[24mESC[JESC[1myasu@kiki:~%ESC[0m cat /etc/ESC[Kpa^MESC[1mCompleting fileESC[0mESC[Jpam.dESC[27m/ESC[27m  ESC[27m  ESC[27mESC[JpasswdESC[27m  ESC[27m  ESC[27mESC[JpathsESC[27m   ESC[27m  ESC[27mESC[Jpaths.dESC[27m/ESC[27mESC[JESC[AESC[AESC[0mESC[27mESC[24mESC[0mESC[27mESC[24m^MESC[13Ccat /etc/paESC[KESC[0mESC[27mESC[24msswd^MESC[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.20110101ls -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値を求める。

右クリックペーストするな

TeraTermPuTTYなど、Windows用のSSHクライアントでは右クリックペーストすることが出来るが、この機能は避けた方が良い。右クリックをする際に誤ってマウスを動かしてしまうと、思わぬところをコピーペーストしてしまからだ。

右クリックによるペースト機能は向こうにしておいて、Shift+Insペーストするのが一番安全だ。

f:id:hirata_yasuyuki:20110213210742p:image

万全を期すなら、クリップブックでクリップボードの内容を常時表示させておくと良い。クリップブックは 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が入っていないシステムも、インストールが許されないシステムもあるのだ。)

「xxよりも○○を使ったほうが良い」ということじゃなくて、「自分がいつ何に対して何をやったか記録しなさい。記録することが大事」ってことかと。
トラブったとき「いつ、何をどうやったかログ(やったこと記録)を見せて」と言っても記録録ってない奴は意外に多い(経験的に)
新人(他人)より、まず何よりも明日の自分は他人です。

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中