小ネタをまとめてみた。

jessieでsystemdを使わない(System-Vを使う)

 apcupsdが、systemdと相性が悪いみたいなので、systemdをやめる。

PerlでSQL Serverにつなぐ

 以下のようにパッケージを入れる。

# apt-get install libdbi-perl libdbd-odbc-perl tdsodbc

 以下のファイルを変更する。

XFSの便利なコマンド

 XFSには、オンラインでデフラグする機能がある。ここでは、フラグメント状態の確認と、デフラグのコマンドを紹介する。

HDDを完全消去する

 shredコマンドを使用する。

# shred -n 2 -v /dev/sdz

 "-n 2"で、ランダムな値を2回書き込む(デフォルトは25回)。"-z"で最後にゼロで埋める。"-v"で、進捗状況を表示する。

仮想端末を使用する

 screenを使用して、同じ端末内で複数の仮想端末を切り替える。

$ screen

 主なオプションは以下の通り。

オプション意味
<なし>新しく仮想端末を起動する。
-ls現在の仮想端末一覧を表示する。
-r [pid.tty.host]デタッチされている仮想端末にアタッチする。

 screen上での主な特殊コマンドは以下の通り。

コマンド意味
Ctrl+a d現在の仮想端末をデタッチする
Ctrl+a S端末を上下に分ける
Ctrl+a Tab表示中の別の端末に移動
Ctrl+a c新しい端末を作成
Ctrl+a n次の端末に切り替える
Ctrl+a p前の端末に切り替える

rrdtoolを日本語に対応させる

 rrdtoolで作成される画像に日本語を入れるには、以下のようにパッケージをインストールする。

# apt-get install ttf-unifont

 その後、rrdtoolの GPRINT などに、日本語を UTF-8 で指定すれば日本語が表示される。
 ちなみに、曜日や月を日本語で出力するには、環境変数 LANG に ja_JP.UTF-8 を指定する。apacheで設定する場合、範囲を制限してSetEnv LANG "ja_JP.UTF-8"と指定すると良い。

parted

 3TBのディスクを扱おうとすると、GPTが必要になる。fdiskではGPTに対応していないため、partedを使うことになる。
 /dev/sdaをGPTにして、最大サイズのパーティションをRAID用領域として確保するには、以下のように行う。開始位置を1にしないと、「Warning: The resulting partition is not properly aligned for best performance.」と警告された。

# parted /dev/sda
(parted) mklabel gpt
(parted) mkpart primary 1 -0
(parted) set 1 raid on

HDDのセクタチェック

 初めて使うHDDや、動作の怪しいHDDは、念のためチェックをしたい。ここでは、正常に読み書きできることの確認をする。この方法だと内容はすべて消える*1

badblocks -b 4096 -ws /dev/sdz

 このテストでは、全セクタへの読み書きを4パターン行うので、とても時間がかかる。
 2Tのチェックに50時間程度、6T(WD6003FFBX)のチェックに74時間半程度かかった。

表示内容を自動保存

 セキュリティ的な意味もかねて、表示内容を自動保存する。
 ただし、ユーザ権限で書き込む仕組み上、ユーザが消すことは可能なので、悪意のあるユーザに対しては無力となる。

 以下のファイルをログインシェルにする。

sshdの設定

 デフォルトでは、パスワードログインが可能になっていたり、rootでのログインが可能になっていたりするので、両方とも出来なくする(一般ユーザの鍵認証でのみログイン可能)。

参考:
http://tdg.uncure.net/blog/index.php?UID=1132579202

GRUBの設定変更

 カーネルオプションを変えるときは /boot/grub/menu.lst を編集するが、カーネルバージョンアップなどで update-grub が実行されると、編集した部分は消えてデフォルトの設定となってしまう。これでは具合が悪いので、デフォルト値を変更することにする。
 /boot/grub/menu.lst の52行目あたりから始まる「DO NOT UNCOMMENT THEM, 〜」以降にデフォルト値が書いてある。変更したい部分を、コメント状態のまま書き換える。
 書き換えた後 update-grub を実行すると、反映されるのがわかる。
 
参考:
http://itmst.blog71.fc2.com/blog-entry-69.html

ハードウェア環境の詳細取得

 マザーボードの型番や、接続されている拡張カードの型番、メモリのクロック数など、これ以上ないと言うくらい詳細な情報がわかる。

tcshで~/.historyの読み込みで落ちる場合の対処

 デフォルトシェルとしてtcshを使っている場合、何かしらの原因で履歴に変な制御コードが入ったり、多バイト文字がある場合に、まれに~/.historyの読み込み時にセグメントエラーで落ちることがある。この状態になってしまうと、ログインできなくなってしまう。
 物理的に離れた場所にマシンがあるなどの理由で、ネットワークからしかログインできない場合は、唯一のログイン方法がたたれてしまいどうしようもなくなる。
 この問題を回避するためのよい方法を思いついたので、ここに述べる。

 まず、~/.historyがいつ読み込まれるのかに着目する。それには、各設定ファイルが読み込まれる順番を追っていく必要がある。tcshのmanによると、以下の順番で読み込まれるようだ。

  1. /etc/csh.cshrc
  2. /etc/csh.login
  3. ~/.tcshrc
  4. ~/.cshrc
  5. ~/.history
  6. ~/.login
  7. ~/.cshdirs

 このことから、~/.historyの読み込み前後にスクリプトを実行できることがわかる。
 これを利用して、~/.historyの読み込み前に一時ファイルを作成し、~/.historyを読み込んだ後に一時ファイルを削除するようにしておけば、次回ログイン時に~/.historyの読み込みで失敗したことが検出できる。

 具体的には、以下のようなスクリプトを追加する。

 自前パッケージでtcsh自体に手を加える方法も紹介しているが、root権限を持っていなかったり、環境を変えたくないなど、バイナリを変更することが出来ない場合は、ここで紹介した方法でも永遠にログインできなくなることは防げる。

標準出力とエラー出力をファイルに出力しつつ、エラー出力だけは標準出力にも出力

 cronで、コマンドの実行結果をすべてファイルにリダイレクトして、エラーがあるときは標準出力にも出してメールを飛ばしたいなどで使えそう。
 sh系(bashなど)では、以下のようにする。

$ command 2>&1 >> file.log | tee -a file.log

 これで、標準出力と標準エラーは"file.log"に出力され、標準エラーは標準出力にも出力される。


*1 -wをつけないか、-wの代わりに-nで保持される

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2018-09-24 (月) 08:31:55 (439d)