インフラ

【Linux初心者の方向け】Linuxオペレーション時に意識するとよいこと

MMM Corporation
shimo

こんにちは、下條です。名古屋はここ最近非常に暑く、外に出るのも面倒です。

弊社ではサーバOSとしてはほぼLinuxを利用していますが、バックエンドのエンジニアとして入ってくる方の中にはWindowsの経験はあるけれども、あまりLinuxの経験がない方もいらっしゃいます。Linuxオペレーションになかなか慣れず苦労をする場合もあるようです。その苦労している過程を見ている中で、Linuxのオペレーションに関して意外と

  • 本などに載っていない
  • 当たり前過ぎて明示的に共有されていない。

など、慣れた人の暗黙的なナレッジというのがかなり存在するのではと感じています。

というわけで今回は、Linux初心者の方向けにLinuxオペレーション時の心がけ・気をつけるべきことについてまとめてみたいと思います。初心者の方が、慣れた人のオペレーションを見ると非常に速く、驚くこともあるかと思いますが、速いオペレーションの中でもオペミスを防ぐため、常に無意識のうちに、もしくは意識して気をつけていることがあるものです。それらを社内のメンバーにも意見を聞きながらまとめてみました。

できる限り一般ユーザーで作業する

これはよく言われていることだとは思いますが、できる限り一般ユーザーで作業することで、万が一のオペミス時の影響を小さくすることができます。

現在作業しているサーバ・ディレクトリを常に意識する

目的のサーバに入る際に何台も踏み台サーバを経由するケースなどもあるかと思います。必ず現在作業しているサーバおよびディレクトリを意識・確認するようにしましょう。間違えるととんでもないことになることがありますので。
可能であればプロンプトの表示でサーバ名・ディレクトリを表示しておくようにするとよいと思います。
Bashプロンプトの変更などをご参照ください。

本番作業は複数人で行う

原則として既に本番運用に入っている環境での作業はダブルチェックをするため、複数人で実施するようにします。

作業時に指差し確認する

本番環境で特に慎重な作業が求められるケースでは、指差し確認をするのもオペミスを防ぐ良い方法です。

自分が打とうとしているコマンドの作用を意識する

例えば ls , w などの参照系コマンドであれば、パッとEnterで実行しても害はないので問題ないのですが、 cp, rm など何かしらの作用を及ぼすコマンドを実行するときはEnterを押す前に一瞬自分の中でチェックするようにします。以下の観点をパッと判断します。

  • そのコマンドは何らかの破壊的動作を伴うか。伴う場合、コマンドを再チェックする。この rm コマンドはどのホストでどこを削除しようとしているのかなど。
  • そのコマンドを打つことでサーバのリソース (CPU, メモリ, ディスク等) に対して問題を発生させないか。例えばディスク容量を食いそうであれば、事前に df コマンドでディスク容量をチェックする。

前者とも関連しますが、本番作業で何らかの作用があるコマンドを実行するときには一緒に作業している相手にチェックしてもらうようにします。

コマンドをコピペするときには注意する

手順書などからコンソールにコマンドをコピペするような場合、誤って改行コード込みでコピーをしてしまうと、ペーストした瞬間に実行されてしまって「あっ、、、」ということが起こります。コピーするときは改行が含まれていないか注意しましょう。

viを最低限使えるようにする

Linuxオペレーションをしていると現実にはviを使う機会は避けられないと思います。vi (vim) は操作ミスなく最低限の操作ができるように練習しましょう。

設定ファイル編集前にはバックアップをとる

特に設定ファイルがDockerなどでのコード管理がされておらず、設定ファイルを直接サーバ上で編集するような場合、ファイルにもよりますがバックアップを取りましょう。特に設定ファイルが難しい場合、何かあったときに何を編集したか忘れて戻せなくなることがあります。

基本的なコマンドを手になじませる

以前、障害調査に役立つ基礎的なLinuxコマンド集というのをまとめましたが、追加したいコマンドを記載します。

scp

ファイルの移動に多用しますので、送信・受信のパラメータについて手になじませておくとよいと思います。

tar

大きなダンプファイルやログファイルを圧縮する際に多用しますので、圧縮・展開のパラメータを手になじませておくとよいと思います。

お試しオプションの活用

rsync などには実際に実行せずにお試し実行できる dry-run オプションが存在します。 rsync には --delete など危ないオプションもあるため、活用しましょう。
また、お試しオプションがない場合でも例えば、 rm hoge/*.txt を実行する場合、ls hoge/*.txt を実行してみて確認するといった方法もあります。

コマンド個別の話題

rm -rf コマンドでは絶対パスを指定しない

例えば、本来は rm -rf /home/shimojo/hogehoge/ としたいところで rm -rf / まで入力した状態で誤ってEnterを押してしまうと大変なことになります。 rm -rf コマンドでは相対パスを指定するようにしましょう。

cp コマンドでの -p オプションの指定

設定ファイルをバックアップするような場合、 -p オプションでタイムスタンプ含めて保持しないといつバックアップしたファイルかが分からなくなってしまいますので、オプションをつけるようにしましょう。

ls コマンド

ls コマンドで、 -ltr オプション使うと一番日付が新しいファイルが一番下に来るので、見やすいです。

パイプ | の活用

コマンドの標準出力を、次のコマンドに渡せるパイプ | は様々な場面で活用できます。
例えば、

$ ps -ef | grep 取得したいキーワード

ps の結果から特定のプロセスの行を抽出するといったことができます。パイプ職人にまではなる必要はないと思いますが、自然と使えるようになっておくとはかどります。

awk コマンドの活用

コマンドの出力の編集や、ログの解析をする際には awk コマンドを活用できます。
例えば、

$ ps -ef | awk '{print $1, $2, $8}'

ps の結果で必要な項目のみを表示させるといったことが可能です。

シェルスクリプトで変数の値に気をつける

変数の中身が空の場合、思わぬことが起こってしまう場合があるので注意しましょう。
例えば

rm -rf /$path

で$pathが空だと大変なことになります。

以上、Linuxをオペレーションする上で、意識するとよいと思われる項目をご紹介しました。やはりこれらは実際にオペレーションをする経験を積まないとなかなか身につかないの部分があるとは思いますが、意識すると多少は上達が早くなるかもしれません。

AUTHOR
shimo
shimo
記事URLをコピーしました