元RX-7乗りの適当な日々 このページをアンテナに追加 RSSフィード Twitter

RX-7(FD3S)WRX STI関連のキーワードで検索されて来られた方へ。
右サイドのカテゴリ『』をクリックすると関連する項目だけが表示されます。
日々の写真は『Flickr』で公開しています。

2011/04/26

by The Planet

Linuxのサーバをリモートから強制的にOSリブートする


先日、諸々の都合で遠隔にあるテスト環境のサーバ(Linux)のカーネルパラメータを弄っていたのですが、ちょっと設定(メモリまわり)がイキすぎてしまいw、コマンド実行というかforkできなくなってしまった(Cannot allocate memory...)。

んで、shutdownコマンドも実行できなくなったので、直そうと思ったのですが、色々弄った&時間がなかったこともあり、一旦OSを再起動しちゃいたいな、と(汗


が、遠隔にあるサーバなので、物理的な電源スイッチON/OFFができない(厳密には出来る環境ではあったのですが、このサーバはそこに入ってなかったw)。ので、SysRqキーを送ることにした。


やり方

少し無理矢理感はありますが、

# echo b > /proc/sysrq-trigger

を実行すると、強制的にリブートがかかります。

ただし、ファイルシステムのsyncとかumountが行われないので、注意が必要です。


通常、KernelでマジックSysRqキーは有効になっていないと思いますが、↑のように、直接"/proc/sysrq-trigger"に出力すればOKです。

シェルコマンドを受け付けない場合は、"/proc/sys/kernel/sysrq"が"1"に設定されている(カーネルでマジックSysRqキーが有効にされている)前提で、[Alt] + [SysRq/(PrtSc)] + [コマンドkey]を実行すればOKのはず。

ちなみに、上記例の場合、[コマンドkey]は"b"となります。


(安全に再起動するには)

Linuxがフリーズした際に、安全にリブートするマジックSysRqキー押下の一連の流れが、Wikipediaのページに書かれていました。

R ⇒ E ⇒ I ⇒ S ⇒ U ⇒ B

マジックSysRqキー - Wikipedia
unRaw      (X Window Systemからキーボードの制御を取り戻す)
 tErminate (すべてのプロセスにSIGTERMシグナルを送り、正常に終了させる)
 kIll      (すべてのプロセスにSIGKILLシグナルを送り、強制的に終了させる)
  Sync     (書き込みキャッシュのデータをディスクに書き込む)
  Unmount  (すべてのファイルシステムを読み込み専用で再マウントする)
reBoot     (システムを再起動する)

参考: その他のSysRqキー

※ 以下の日本語訳は、Wikipediaのページより抜粋(汗

'b' - Will immediately reboot the system without syncing or unmounting
      your disks.
      即座に再起動する。この際ファイルシステムのsyncやアンマウントは行われない。

'c'	- Will perform a kexec reboot in order to take a crashdump.
      カーネルをクラッシュさせる。

'd'	- Shows all locks that are held.
      現在ホールドされているすべてのロックを表示する。

'e' - Send a SIGTERM to all processes, except for init.
      init (PID 1)を除くすべてのプロセスにSIGTERMシグナルを送る
      (プロセスを終了させる)。

'f'	- Will call oom_kill to kill a memory hog process.
      メモリ不足を解消するためにプロセスを終了させる oom_kill を呼び出す。

'g'	- Used by kgdb on ppc and sh platforms.
      Kernel Mode Setting(KMS)使用時に、カーネルのフレームバッファコンソールに
      切り替えるための緊急措置を提供する。

'h' - Will display help (actually any other key than those listed
      above will display help. but 'h' is easy to remember :-)
      コンソールに簡単な説明を出力する。

'i' - Send a SIGKILL to all processes, except for init.
      init を除くすべてのプロセスにSIGKILLシグナルを送る
      (プロセスを強制終了させる)。

'k' - Secure Access Key (SAK) Kills all programs on the current virtual
      console. NOTE: See important comments below in SAK section.
      仮想端末上のすべてのプロセスにセキュア・アテンション・キー(SAK)を実行する。

'l' - Shows a stack backtrace for all active CPUs.
      現在実行中のすべてのタスクのバックトレースを表示する。

'm' - Will dump current memory info to your console.
      現在のメモリ情報をコンソールに出力する。

'n'	- Used to make RT tasks nice-able
      すべての高優先度およびリアルタイムタスクのniceレベルをリセットする。

'o' - Will shut your system off (if configured and supported).
      システムを停止させる。

'p' - Will dump the current registers and flags to your console.
      現在のレジスタおよびフラグをコンソールに出力する。

'q' - Will dump a list of all running timers.
      すべての高精度タイマおよびクロックソースを表示する。

'r' - Turns off keyboard raw mode and sets it to XLATE.
      キーボードをrawモードからXLATEモードへ切り替える。X Windowを使用している場合、
      まずこの操作を行ってキーボードを解放する。

's' - Will attempt to sync all mounted filesystems.
      マウントされているすべてのファイルシステムをsyncする。

't' - Will dump a list of current tasks and their information to your
      console.
      現在のタスクのリストとその情報をコンソールに表示する。

'u' - Will attempt to remount all mounted filesystems read-only.
      マウントされているすべてのファイルシステムを読み込み専用モードで再マウントする。

'v'	- Dumps Voyager SMP processor info to your console.
      Voyager SMPプロセッサ情報を表示する。

'w'	- Dumps tasks that are in uninterruptable (blocked) state.
      ブロックされている(D state)タスクのリストを表示する。

'x'	- Used by xmon interface on ppc/powerpc platforms.

'0'-'9' - Sets the console log level, controlling which kernel messages
          will be printed to your console. ('0', for example would make
          it so that only emergency messages like PANICs or OOPSes would
          make it to your console.)
          コンソールに出力するカーネルメッセージのログレベルを制御する。

参考


Linuxカーネル2.6解読室

Linuxカーネル2.6解読室

2011/04/25

芝山公園の桜

今年の桜


今年は、お花見らしいお花見にはいけなかったけど、身近で何枚か写真が撮れた。(書くタイミングが物凄く遅れたけど・・・。そう思うと儚いものですなぁ。)

ちなみに昨年のお花見は「代々木公園と千鳥ヶ淵緑道(ライトアップ)でお花見」(満開のタイミングで綺麗だった!)


芝山公園

ちょっと満開ではないのが残念なところですが、バックに写る飛行機なんかは良いタイミングで撮れたな、と。

芝山公園

芝山公園

芝山公園

芝山公園 芝山公園

芝山公園


おまけ

もうすっかり春ですね。

芝山公園


芝山公園で撮った写真全て

最寄駅前

こちらの3枚は、iPhone4にて撮影。

駅前の桜

駅前の桜

駅前の桜

2011/04/17

by doug88888

seqコマンドの色々なオプション

seqコマンドは、数値を規則的に増加/減少させるコマンド。

$ seq 1 5
1
2
3
4
5

単純に増加させたり、、、

$ seq 10 -2 0
10
8
6
4
2
0

増減幅を指定して減少させたり。


そんなseqコマンドにオプションがあることを知りました。


"-s" 区切り文字を指定する

"-s"オプションを使うと区切り文字が指定できる。

$ seq -s , 1 5
1,2,3,4,5

例えば、カンマ区切りにしたい場合は↑のような感じ。


ちなみに余談ですが、、、

$ seq 1 5 | paste -s -d ,
1,2,3,4,5

このオプションを使わなくても、pasteコマンドを併用すれば実現できなくもない。


"-w" 桁数を揃えて表示

"-w"オプションは、数字の桁数を揃えるために、頭をゼロ(0)で埋めて表示してくれる。

$ seq -w 0 10 100
000
010
020
030
040
050
060
070
080
090
100

【改訂新版】 Linuxコマンド ポケットリファレンス (Pocket Reference)

【改訂新版】 Linuxコマンド ポケットリファレンス (Pocket Reference)

2011/04/01

Tumblrのトップページのソース


こんな風になっていたんですね。ちょっぴりお洒落。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!--
                                         
        .                                 .o8       oooo
      .o8                                "888       `888
    .o888oo oooo  oooo  ooo. .oo.  .oo.   888oooo.   888  oooo d8b
      888   `888  `888  `888P"Y88bP"Y88b  d88' `88b  888  `888""8P
      888    888   888   888   888   888  888   888  888   888
      888 .  888   888   888   888   888  888   888  888   888    .o.
      "888"  `V88V"V8P' o888o o888o o888o `Y8bod8P' o888o d888b   Y8P

-->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
    <head>
        <script type="text/javascript">var tinyMCE,_sf_startpt=(new Date()).getTime();</script>
        
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
        <meta name="viewport" content="width = 900"/>
        <meta http-equiv="x-dns-prefetch-control" content="off"/>
        
        <title>Tumblr</title>

・・・・・以下略・・・・・

それだけ。


おまけ: Slideshare

コメントで教えて頂きました!

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!--
       .__  .__    .___            .__
  _____|  | |__| __| _/____   _____|  |__ _____ _______   ____
 /  ___/  | |  |/ __ |/ __ \ /  ___/  |  \\__  \\_  __ \_/ __ \
 \___ \|  |_|  / /_/ \  ___/ \___ \|   Y  \/ __ \|  | \/\  ___/
/____  >____/__\____ |\___  >____  >___|  (____  /__|    \___  >
     \/             \/    \/     \/     \/     \/            \/
-->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  <head profile="http://purl.org/uF/2008/03/">
    
    <script type="text/javascript" charset="utf-8">
    // <![CDATA[
      var timer = (new Date()).getTime();
    // ]]> 
    </script>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    
    <meta name="include_mode" content="async" />
    <title>Upload &amp; Share PowerPoint presentations and documents</title>

・・・・・以下略・・・・・

オススメ (一部は、最近読んでいる本とも言う)
Chef実践入門 ~コードによるインフラ構成の自動化 (WEB+DB PRESS plus) クラウド Amazon EC2/S3のすべて~実践者から学ぶ設計/構築/運用ノウハウ~ [Web開発者のための]大規模サービス技術入門 ―データ構造、メモリ、OS、DB、サーバ/インフラ (WEB+DB PRESS plusシリーズ) エキスパートのためのMySQL[運用+管理]トラブルシューティングガイド [24時間365日] サーバ/インフラを支える技術 ~スケーラビリティ、ハイパフォーマンス、省力運用 Linux-DB システム構築/運用入門 (DB Magazine SELECTION) キャパシティプランニング ― リソースを最大限に活かすサイト分析・予測・配置 スケーラブルWebサイト 実践ハイパフォーマンスMySQL 第3版 ウェブオペレーション ―サイト運用管理の実践テクニック (THEORY/IN/PRACTICE) SQLアンチパターン インターネットのカタチ―もろさが織り成す粘り強い世界― ハイパフォーマンス ブラウザネットワーキング ―ネットワークアプリケーションのためのパフォーマンス最適化 Linuxの教科書―ホントに読んでほしいroot入門講座 (IDGムックシリーズ)