if 文と test コマンド if 文とは? if 文とは、与えられた条件式が真のときのみ処理を行い、それ以外の場合は処理をスキップする、などといった場合に使用される条件分岐処理である。 条件式には一般的に test コマンドを用いるが、ls コマンドや grep コマンド等の他のコマンドを用いても構わない。 if 文は条件式に指定されたコマンドの終了ステータスを判定し分岐を行う。終了ステータスが「0」の場合は真、その他の場合は偽となる。 if 文 タイプ 1
シェルスクリプトで繰り返し処理を行うとき必要になることが多いが、ググるさんにたずねてみても案外すぐに見つからないので記録しておくものである。1から100まで1ずつ増加させながら繰り返す場合はこんな感じ。 for i in `seq 1 1 100` do // do something done ワンライナーで書くならこうなる。 $ for i in `seq 1 1 100`; do // do something; done 1 2 (snip) 99 100 2ずつ増加させるなら`seq 1 2 100`にすれば良い。 なおwhile文でも同様のことはできるが長くなるし複雑で分かりにくい。 i=1 while [ $i -le 100 ]; do // do something i=`expr $i + 1` done ワンライナーだと見た目の複雑さがさらに増す。 $ i=1; w
Subversion 1.6にアップグレードしてからというもの、何かsvnコマンドを打つ度に下のメッセージが出るようになりました。 ----------------------------------------------------------------------- ATTENTION! Your password for authentication realm: <http:> TEST SVN repository can only be stored to disk unencrypted! You are advised to configure your system so that Subversion can store passwords encrypted, if possible. See the documentation for details. You
終了ステータス 終了ステータスとは? コマンド終了時には「終了ステータス (exit-status)」と呼ばれるコマンドの成否を表す数値が特殊変数 $? に自動で設定される。 各コマンドにより異なるが、一般的には、 コマンド成功時には「0」 失敗時には「1」(コマンドやエラーの種類によっては 0 以外) が設定される。 → 直前に実行したコマンドの成否は、特殊変数 $? に設定されている値で確認する。 終了ステータスを設定 シェルスクリプトでは exit コマンドに指定したパラメータ (0 もしくは 1 ~ 255 の正の整数値のみ可) が、そのシェルの終了ステータスとなる。シェルスクリプトにおいても正常終了時は exit 0 で、異常終了時には exit 1 で終了するようにするのが慣例である。 関数も同様に return コマンドに指定したパラメータが終了ステータスとなる。 → シェル
How do I Find Out Linux CPU Utilization? 2. vmstat – Virtual memory statistics The vmstat command reports information about processes, memory, paging, block IO, traps, and cpu activity. # vmstat 3 Sample Outputs: procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------ r b swpd free buff cache si so bi bo in cs us sy id wa st 0 0 0 2540988 522188 5130400 0 0 2 32 4 2 4 1 9
linux boxなど、コンソールからsshで接続したときに、idleしても自動切断されないようにするkeepaliveパケットを送信する設定 powerd by matsumoto sho ↓60秒おきにkeepaliveパケットを送信する場合 ssh -o ServerAliveInterval=60 -l username host.example.com これだけキープアライブしてくれます。 aliasに登録しておくと楽ですね! alias ssh='ssh -o ServerAliveInterval=60'
webサーバのチューニングのポイントをまとめておきます。 TIME_WAIT待機時間を短くするアクセスが多いシステムだと、 ソケットの開放が追い付かなくなって ポートを使いきってしまいます。 ⇒特にKeep Alive OFFのwebサーバなど RedHat系Linuxの場合、この待機時間は net.ipv4.tcp_fin_timeout の値になります。(単位は秒) net.ipv4.tcp_tw_reuse、net.ipv4.tcp_tw_recycleを有効にすることで再利用を促進します。 オンラインで変更する場合、sysctlを使って調整します。 設定値の表示 # sysctl -a設定値の書き換え# sysctl -w net.ipv4.tcp_fin_timeout=30 # sysctl -w net.ipv4.tcp_tw_reuse=1 # sysctl -w net.
前回の続き。 パケット自体を零さずに処理に入った後にSYNを落とすのは以下3パターン。 syncookie無効時にsynのbacklog(tcp_max_syn_backlog)が溢れている listenのbacklogが溢れている(3way-handshake完了後のaccept待ち接続) net.ipv4.tcp_tw_recycleの制限に抵触 で、今回問題になっていたのは最後のtcp_tw_recycleへの抵触だった。 現象として発生しうるのは、以下の条件をすべて満たす場合 サーバ側でnet.ipv4.tcp_tw_recycleが有効 TCPタイムスタンプオプションを使用 同一IPからの接続でセッションを跨ぐとセットされるTCPタイムスタンプの値が戻る場合がある 最後の条件が微妙だが、TCPタイムスタンプの値としてセットされる値は起動時を 起算時にしていたりと実装によって初期値
2008年4月21日(月) ■ 無題 _ 今朝の電車でおっさんが読んでたスポーツ新聞からちょっと見えてた見出し。頭のおかしい人が新幹線で全裸になってタイーホ。春だなぁ。 _ 出社してからニュースサイトを巡回して、それが ファーストサーバの社長だったと知る。あぁ。 _ ち、ちがうよっ、春だから頭のおかしい人が湧いてきたんじゃないよっ。だってレンタルサーバ会社の社長だよ? 頭がおかしいなんてことはないよ。最近のデータセンターは電力問題とか熱問題とかいろいろ大変だからね、きっと陽気がよくなってあったかくなったから熱暴走を起こして、その冷却のために大事なところを放熱してただけなんだよっ。 _ てか、ファーストサーバっていつのまにか yahoo の系列になってたのか。昔はクボタ(もちろん農業機械のクボタのことだ)の子会社だったよね、たしか。 2008年4月28日(月) ■ 無題 _ メール屋を廃業し
ip_conntrackを設定する理由 パケットフィルタリングツールであるiptablesは、パケットを解析するときにip_conntrackというファイルにトラッキング情報を記録します。 ip_conntrackには、最大トラッキング数があり、それをオーバーすると新規セッションを弾いてしまって、ネットワークパフォーマンスの劣化を招きます。 /var/log/messageにこのようなメッセージが出ていたら、ip_conntrackが溢れている状態です。 大量のトラフィックを捌くロードバランサーやキャッシュなどの目的を持ったLinuxマシンで、iptablesを使っているときには、ip_conntrackの最大トラッキング数を忘れずに設定しておきましょう。 ここでは、手元のマシンCentOS 5と6で設定をしていきます。 検証環境 CentOS 6.3(64bit) CentOS 5.8(
整理がてら。 httpdが動いているあるホスト上で、 /var/log/messages に以下のようなメッセージが出ていた。 kernel: TCP: time wait bucket table overflow kernel: printk: 50078 messages suppressed. "netstat -tna |grep TIME_WAIT"すると、10万以上の数でTIME_WAITが出ている。これを解消するまでの流れ。 そもそもこの値は、カーネルパラメータの net.ipv4.tcp_max_tw_buckets で設定されている。デフォルトは16384。 (↑の通り、エラーが出た環境では既にかなり大きな値が設定されていたのだが。) /proc/sys/net/ipv4/tcp_max_tw_buckets システムが同時に保持する time-wait ソケットの最大
このエントリを読んでいたら、知らないツールがあったので使ってみました。 pmap(Procps) IPTraf ntopng – ntop 今回は、Ubuntu 11.10で使用してみましたが、RedHat系でも同様に使用することができると思います。 pmap pmap はプロセス毎のメモリ使用状況を表示します。 引数にPIDを付与して実行します。 (インストール) $ sudo aptitude install procps (実行例) $ sudo pmap 533 533: /usr/sbin/sshd -D 00007f49e1137000 48K r-x-- /lib/x86_64-linux-gnu/libnss_files-2.13.so 00007f49e1143000 2044K ----- /lib/x86_64-linux-gnu/libnss_files-2.13.
(※)このページで紹介している事項は記事初出時点の情報に基づいたものです。本ページはアーカイブとして掲載しています。 ツイート 2012年12月18日 UNIX系のOSで利用できるWebサーバの性能測定ツールといえば、Apache Benchやhttperfを思い浮かべる人が多いのではないでしょうか。これらの計測ツールは、残念ながら最近の高速なWebサーバを計測するには非力です。この記事では、高速なWebサーバにも負けないweighttpの使い方を紹介します。 weighttpとは何か weighttpは、Webサーバlighttpdの開発者が実装したWebサーバの性能測定ツールです。以下のような特徴を持ちます。 Webサーバのスループット(リクエスト毎秒)を測定できる ネイティブスレッドを複数起動し測定性能を向上できる libevを利用することで、モダンなポール・システムコールを利用する
皆さん今日もたくさんのサーバを相手にされていることかと思いますが、いくつかのサーバにアクセスして 1 秒間の統計情報(例えばvmstat 1 2)を集めてパッと表示したい時ってどうやってますかね?shell script を学びはじめたばっかりの僕はこんな感じで書いてました。 $ for i in host1 host2 host3; do ssh $i "vmstat 1 2 | tail -1"; done 0 0 0 329004 210836 14275360 0 0 0 2424 1410 1828 0 0 100 0 0 0 0 0 3716112 587704 25921684 0 0 0 488 1643 2026 0 0 100 0 0 1 0 0 555440 265560 14015548 0 0 0 4204 1534 2392 1 0 99 0 0 vmstatと
Ubuntu is a community developed operating system that is perfect for laptops, desktops and servers. LinuxやFreeBSDの操作に慣れてきたら、次はコマンドを組み合わせてシェルスクリプトを作成し、これまでコマンドラインから入力していた処理の自動化や、より高度なコマンドの作成を実施していきたい。こういった場合、ターミナルそのものがユーザが操作する基本インタフェースということになる。 ターミナルは文字を表示するという機能以外にも、所定の場所にカーソルを表示させたり、フォントを変更したり、表示する色を変更したりとさまざまな機能を提供している。これら機能は制御コードシーケンスと呼ばれる特殊な文字列をターミナルに出力することで利用できる。ただし、制御コードシーケンスはターミナルごとに違っているため
原因はおそらくwebサーバ〜DBサーバ間のセッションがネットワーク的に不安定だったからだと思うけど、DBサーバで netstat -an すると 大量の CLOSE_WAIT のセッションが残ってしまって、MySQL の最大コネクション数にまで達してしまってwebの表示が出来なかった。CLOSE_WAIT をいきなり消すことは出来ないので、早めに消えるようにしたいときは tcp_keepalive_time TCPセッションが確立されて検査が実施されるまでの時間 時間になると tcp_keepalive_intvl と tcp_keepalive_probes の値にしたがって検査を実施する tcp_keepalive_intvl 次の検査を実行するときの待ち時間 tcp_keepalive_probes 検査の回数のそれぞれの値を小さくしてあげればよい。変更方法は vi で :wq する
通りすがりの貴方・・・・ /proc/meminfoのあっちの値とこっちの値を足したら、なんでそっちの値と同じにならないの・・・・ と悩んだことありますよね? /proc/meminfoは、カーネルが内部的に管理している枠組みでのメモリ情報をそのまま出しているので、残念ながらユーザ視点で知りたいメモリ情報とは一致しません。 とはいえ、変な解釈をして無意味に悩まないために、それぞれの値の意味合いと項目間の関係を知っておくのは有意義です。私の理解の範囲で、それらの関係をまとめていきます。 #私の理解も完璧ではないので、間違いあればやさしくご指摘お願いします。 参考資料 http://mkosaki.blog46.fc2.com/blog-entry-1007.html 2011/09/07 追記: tmpfsがSwapCachedに含まれるのは幻想でした。tmpfs=Shmemに修正しました。
pssh pssh(Parallel ssh)とは、複数のホストに対して同じ処理が実行できる並行処理型のSSHツールです。psshには平行処理形で複数のホストにscp、rsyncが実行出来るpscp、prsync、複数のホストから一斉にファイルを収集するpslurpが含まれています。 使い方がシンプルなので複数のホストに同じ処理を実行したい場合に便利です。 導入環境はCentOS5.5です。 psshの導入 psshの導入にsetuptoolsが必要なのでyumで導入 sudo yum -y install python-setuptools 最新版のpsshを導入。2010/08/26現在の最新バージョンは2.1.1です。 mkdir ~/tmp cd ~/tmp wget http://parallel-ssh.googlecode.com/files/pssh-2.1.1.tar
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く