【Linux】nfsサーバのhardマウントとsoftマウント

nfsサーバのマウント時の方式として、hardマウントとsoftマウントがある。
デフォルトはhardマウント。ちょっと違いを整理したよ。

マウント方式 特徴
hard
intrオプションなし
・nfsサーバが応答するまで待つ。例えば、nfsサーバ通信段時に、dfコマンドを実行するとコマンドが返ってこなくなる。
・アプリケーションなどから、nfsマウント領域に対して、I/Oを発生させる仕組みがある場合、ハングしているように見える。
hard
intrオプションあり
・基本的に上記と同様
・ハング時に、SIGHUP、SIGINT、SIGQUITシグナルを送ることで、I/Oを中断できる。(Ctrl+Cで抜けれる)
soft ・nfsサーバが応答しない場合、タイムアウト時にエラーとなる。
・タイムアウト値は、timeoオプションで指定する

・基本的には、データ不整合を防ぐため、hardマウントが推奨される
・softマウントの場合、例えば、アプリケーションでDBに書きつつ、nfs領域にファイルライトがある処理があるとすると、DBには書いたけど、nfs領域にはファイル書けなかったという、不整合状態が起きてしまう(それを考慮されてアプリならOK)
・デフォルトはhard

【Linux】yumコマンドでバージョン指定してインストール

例えば、MySQLをインストールしたいときに、以下の場合だとマイナーバージョン22がインストールされる。
でも、バージョン21をインストールしたいときとかあると思う。そんなときの方法

【Linux】コマンド結果を改行させない

例えば、コマンド実行結果を「時間 結果」みたいな出力方法をしたいとき、こんな感じだとちょっとカッコ悪いし、後から整理しにくかったり。

trコマンドで改行コード\nを置換することでいい感じになるよ。

echoの改行なしは、-nオプションで。

こっちの方がスマートかも。

【Ubuntu】Ubuntu18.04にdjango環境をインストール

最近、pythonの勉強をし始めました。
ぼくは、Windows10のWSLをインストールしてそこを開発環境にしてたりするよ。

ブラウザで「http://localhost:8080/admin」へアクセス

createsuperuserで作成したユーザでログイン

【Linux】公開鍵認証のしくみ

いままでなんとなくだったものをちゃんと知識として定着させようシリーズ。
(公開鍵認証ってなんだっけなんていまさら言えないし・・・)


まず事前準備として、クライアントにてキーペアを作成し、サーバへ公開鍵を送る
クライアントでssh-keygenをして、サーバのauthorized_keysに公開鍵を登録してあげるイメージ


① クライアントはサーバに対して、ログインを要求する
② サーバは乱数を生成し、クライアントの公開鍵で暗号化する
③ ②と同時に、サーバは乱数からハッシュ値を生成する
④ サーバは暗号化データをクライアントへ送信する
⑤ クライアントは暗号化データを自身の秘密鍵で復号する
⑥ クライアントは復号した乱数からハッシュ値を生成する
⑦ クライアントはハッシュ値をサーバへ送信
⑧ サーバは自身が生成したハッシュ値とクライアントから送られてきたハッシュ値とを比較
⑨ ⑧がOKであれば、ログイン要求を許可し、接続が確立

やっぱ、めんどくさくても絵描かないとダメだね。

【Linux】シェルにてスペースが含まれている文字列を1行として扱う

以下のようなファイルがあるとすると

シェル内でスペース区切り文字を読み込むとスペースで区切られてしまう

IFS(Internal Field Separator)の環境変数に区切り文字を指定する。
環境変数設定前に現在の状態を保存し、処理終了後に元に戻す。

という感じで。

【Linux】ログローテーションを手動実行

テスト実行

手動実行

※この方法の場合、/etc/logrotate.confで定義したオプションは無視される compless、dailyなど

【Linux】while read lineでsshコマンドを実行するとループしない

5行のファイルを読み込んでecho出してみると普通にいける

ssh経由でechoしてみると5行読み込んでいるはずが、1行だけ読み込んで抜けてしまっている

対処法其の一 「for line in cat readfile」でよみこむ

対処法其の二 「ssh -n」オプション(バックグラウンド実行)を使う

どうやら、sshコマンド実行時に標準入力が切り替わり、ローカルホストからの標準入力を停止し、リモートホストからの標準入力を受け付けるみたい。
while read line実行時は、ループ処理開始前にファイルを読み込み、その中でsshコマンドを実行、その後再びreadコマンドを実行する際にファイルが既に閉じられているからループを抜けてしまうみたい。

参考
http://www.m-bsys.com/error/whileread-ssh

【Linux】curlで天気予報をゲット

面白コマンド

ヘルプでいろいろいじれそう

【Linux】firewalldにて独自サービスを定義する

といっても、今回はsshのポートを変えたので22から変更したい。
独自サービスを定義するときは、「/usr/lib/firewalld/services/」配下に大量にxmlがあるからそれをコピーしてprotocol、portを変えてあげればいい。