POSIX sh 以上の機能を備えた bash, ksh, zsh によるシェルスクリプトの話題。 なるべく外部コマンドに依存しないピュアシェルスクリプトを目指します。 sed, awk などのスクリプトが 80% 以上含むものはシェルスクリプトと認めません(老害)。…いや、嘘です、使います。 一人でやる予定だが未定。ネタください。
![拡張 POSIX シェルスクリプト Advent Calendar 2013 - Adventar](https://cdn-ak-scissors.b.st-hatena.com/image/square/216cc359e648393f04b96c88311401bbb5691aa2/height=288;version=1;width=512/https%3A%2F%2Fadventar.org%2Fog_image.png)
POSIX sh 以上の機能を備えた bash, ksh, zsh によるシェルスクリプトの話題。 なるべく外部コマンドに依存しないピュアシェルスクリプトを目指します。 sed, awk などのスクリプトが 80% 以上含むものはシェルスクリプトと認めません(老害)。…いや、嘘です、使います。 一人でやる予定だが未定。ネタください。
サーバNIC(Network Interface Card)の可用性向上や負荷分散にはNIC冗長化が有効です。NIC冗長化については拙著「インフラエンジニアの教科書」にも記しましたが、bonding、チーミング、リンクアグリゲーションなど様々な呼び名があります。今回はLinux上でのNIC冗長化の話しとなりますので、bondingについての話題となります。 【bondingとは】 bondingとは、複数のNICが搭載されているマシンのNICを束ねて1つの仮想的なNICとして扱うことのできる技術です。例えば1GbpsのNICポートが4つ搭載されているサーバとL2スイッチの間を4本のLANケーブルで接続してbonding設定を有効にさせると、冗長化が行われて最低1本が正常であれば1~3本に問題があっても通信が継続できたり、負荷分散が行われて通信帯域幅を4Gbpsに拡張されたりといった使い方が
実際にはこんなにたくさんのIPアドレスを、ひとつのNICに割り当てる必要があるか、というのは横へ置いておきます(笑)。 技術的には、IPアドレスの第4オクテットを、0と255以外の1から254までの設定ができるとのことです。IPエイリアスでifcfg-eth0:0のように設定することはできるのですが、この場合は/etc/sysconfig/network-scripts以下に多数のファイルが出来上がります。そうではなくて単一のファイルifcfg-eth0-range1に、1〜10のように範囲で設定できる方法がカーネルに実装されていることを知りました。 DEVICE=eth0 BOOTPROTO=static HWADDR=00:04:75:D4:C8:F9 IPADDR_START=192.168.0.6 IPADDR_END=192.168.0.10 CLONENUM_STAR
awkという、古くからのスクリプト言語がある。(1977年生まれ。読み方は「オーク」である。エイ・ダブリュ・ケイではない)man awkをPDFに変換してみると、たったの3ページ強しかない。 $ man -t awk|pstopdf -i -o ~/Downloads/awk.pdf とてもシンプルな言語仕様ではあるが、awkには必要十分な表現力がある。特にテキストを処理する場面においては、最小限のシンプルな記述で、気の利いた処理を素早くこなす。無駄のないawkワンライナーを見ると、ある種の感動を覚える。awk以降に生まれたスクリプト言語は、少なからずawkの影響を受けていると思われる。 awkを知ることで、間違いなく幸福度は上がると思う。いつかきっと「知ってて良かった」と思える時が来るはず。もっともっと、awkを知りたくなってきた。 基本動作 awkの基本動作は、とってもシンプルである。
ということに、(今更?)気付いたお話です。 HAを組んだ際のVIPの切り替えテストをやっているときに、高負荷時とかは切り替えに7秒ぴったりかかるケースとかがあって、7秒って何の数字だろうと疑問を持ちました。 OSは、CentOS 6.4(2.6.32-358.23.2.el6.x86_64)です。 TCP SYNの再送間隔が、1...2...4...秒になっている で、tcpdumpを眺めていると以下のようなシーケンスです。 11:50:35.689301 IP client-host.8957 > server-host.http: Flags [S], seq 1616681830, win 14600, options [mss 1460,sackOK,TS val 889880946 ecr 0,nop,wscale 7], length 0 11:50:36.688503 IP
仮想化の分野はどんどんと新しいものが出てくる。全部を実際に試すことは出来なくても、筋が良さそうなものについては、どういうものなのかある程度把握しておきたい。最近はちょっと忙しくてあまり情報収集ができてなかったので、追いつこうと思ってちょっと調べてみた。 ハイパーバイザ型仮想化とコンテナ型仮想化 仮想マシンの歴史をたどると、メインフレームの方では随分と昔から使われている技術である、と出てくる。一方で、x86の世界ではそれほど歴史は長くなく、1999年にリリースされたVMwareがおそらく実用的な初の仮想マシン技術だろう。 VMWareはハイパーバイザ型仮想化と呼ばれる技術で、上に乗るOS(ゲストと呼ばれる)に対して仮想的なハードウェアを提供する。ハイパーバイザ型も、どのレイヤで仮想的なハードウェアを提供するかで更に細分化されるらしいが、よく知らないので、ここではそこまでは踏み入らない。ハイパ
タイトルで言いたいことはすべて言った。 経緯 うちの場合はLVS+keepalivedなロードバランサなんだけど、ちょくちょくkernel panicになる問題が発生してた。 そこでcrashコマンドで解析してみた。crashコマンドの使い方はこちらが参考になる。Linux crash dump 読み方入門 # crash /boot/System.map-2.6.32-279.14.1.el6.x86_64 /usr/lib/debug/lib/modules/2.6.32-279.14.1.el6.x86_64/vmlinux /var/crash/127.0.0.1-2013-09-27-16\:21\:01/vmcore (snip) SYSTEM MAP: /boot/System.map-2.6.32-279.14.1.el6.x86_64 DEBUG KERNEL: /usr
_ はじめに この文書は2013 Kernel/VM Advent Calendar 2 日目のために書かれたものです。 Linux の stable kernel というカーネルのリリース作業に関わってみませんかという紹介をします。わたしは一年ほどこの作業に関わった結果、自分のためにも世間のためにも役立つと考えたため、その経験にもとづいて記載します。 本書は次の順序で説明します。 stable kernel とは(知ってる人は読み飛ばしてください) stable kernel review とは 参加する利点 作業内容 おまけ _ stable kernel とは Linux Kernel の公式サイトにやたらとたくさん並んでいるカーネルにはいくつかの種類があります。まずは、Linus Torvalds 氏が管理する mainline と呼ばれるカーネルです。mainline カーネルに
Linuxを推進する非営利団体のLinux Foundationは10月21日、KVMの認知普及促進を目的とした団体「Open Virtualization Alliance(OVA)」を傘下プロジェクトにすることを発表した。OVAは仮想化技術KVM(Kernel-based Virtual Machine)促進を目的とした業界団体。今後、Linux Founationと協業しながらKVMの啓蒙や開発者コミュニティ向けの取り組みを進めていくという。 OVAは、KVMの認知普及を図る目的で2011年5月に設立された団体。オープンな仮想化技術としてのKVMの受け入れ、KVM関連のサードパーティソリューションのエコシステム作り、相互運用性やベストプラクティスの奨励などに取り組んでいる。設立メンバーは米BMC Software、米Eucalyptus、米Hewlett-Packard、米IBM、米
naoya さんのポータブルな Web アプリケーションを受けて最近思ってることをば。140 文字で時々書いてるんだけど、まとまりがないので一回まとめておきます。 12-factor app ステートフルなアプリケーションについては、Heroku の人が提唱してる 12-factor app というのが現在の状況をよく表してます。 The Twelve-Factor App The Twelve-Factor App(日本語訳) Heroku や他の PaaS によってもたらされたこうした一種の”制約”によって、アプリケーションの新しいカタチが生まれてきています。引き算によって新しい価値が生まれてきているわけですね。 とはいえ、PaaS は PaaS でそれぞれに独自の仕様を持っているわけですが、Heroku の buildpack という仕組みを使って、Heroku とインタフェース仕様
このFAQについて 1 プロセス制御 1.1 新しいプロセスの生成: fork() 1.1.1 fork()は何をするのですか? 1.1.2 fork()とvfork()の違いは何ですか? 1.1.3 forkによる子プロセスを終了するときにexitよりも_exitを使うのはなぜですか? 1.2 環境変数 1.2.1 どうすればプログラム内で環境変数の値を取得・設定できますか? 1.2.2 どうすれば全ての環境変数を調べられますか? 1.3 どうすれば一秒未満のsleepができますか? 1.4 粒度の細かいalarm()はどうすれば得られますか? 1.5 どうすれば親プロセスと子プロセスの間で通信できますか? 1.6 どうすればゾンビプロセスができることを防ぐことができますか? 1.6.1 ゾンビプロセスってなんですか? 1.6.2 どうすればゾンビプロセスになることを防げますか? 1.7
hashicorp/serf Serf Serf使ってますか!サーフ! 諸事情というか大人の事情で急遽自前でロードバランサを用意しないといけなくて、それをissueに書いてたら、 あんちぽさんがSerf+HAProxy使ったらいいのでは、 とIRCで助言をくれて、同日のmizzyさんのブログでもSerfに言及していたので、 ちょっとSerfの概要を知るためと、Serf+HAProxyが実際ロードバランサとしてどんな感じに使えるのか検証してみた。 I told @glidenote about a combination of Serf and HAProxy this morning, and he has already implemented the arch. and done investigation… — kentaro (@kentaro) October 29, 2013
日本アニメ初の快挙!海外アニメ賞を受賞した『スキップとローファー』海外ライセンス部長&プロデューサーが語る、奮闘の舞台裏
斎藤です。こんにちは。 RedHat Enterprise Linux 7(RHEL7)リリースの足音が聞こえる今日この頃ですが、皆様いかがでしょうか。予習として、Fedora 19を利用されている方もいらっしゃるかと思います。 その中で、大きな変化の1つとして、 systemd(※1) の採用があります。systemdは、SysVinitやUpstartに変わる、プロセス管理の仕組みです。そうです、起動スクリプトの書き方や、プロセスの確認方法が大きく変わる事になるのです!そうなれば、構築や運用に関わる知識や手順を覚え直す必要が出てきます。 しかし、systemdに関する資料は、それほど多くありません。そこで、簡単ですが記事執筆時点(2013-10-24)での情報源をまとめてみました。検証の際の情報収集時、お役に立てば幸いです。 ※私が社内Wikiにまとめた情報をBlog用に整理し、公開し
今日、Web/メール等のサービスを稼働させてる自社のLinuxサーバが、突然サービスが停止してしまう障害が発生した。 特にメールでトラブルが広がっており、プロセス見るとdovecot deliverとpop3が多数止まっている状況だった。 ログを見ると、deliverは「still being delivered」というエラー、pop3は「Too many open files in system」等のエラーを吐いていた。 最初はメールだけのトラブルと思い、とりあえずdovecotとpostfixのstopを掛けたのだが、デーモンの親プロセスは死ぬもののdeliverもpop3もSTATが「D」や「Ds」となっていたため「# kill -9」しても死なず。 いくつかログを見たところ、ファイルシステムの障害は考えにくかったため、リブートするしかなかろうということで「# shutdown -r
PC の HDD を SSD に変更したので、I/Oスケジューラを noop に変更してみた。 SSD は HDD のようにシーク(目的のレコードが記憶されたシリンダにヘッドを移動)したり、サーチ(目的のセクタの先頭がヘッドの位置に来るのを待つ)したり、物理的な動きはない。なので、OSのI/OスケジューラでソートなんかせずにI/Oリクエストを渡してくれたほうが速いとという話だと思う。 簡単に noop が速いことを検証した上で、noop に変更した。 cfq I/Oスケジューラを cfq に設定する [root@yazekats-linux queue]# echo cfq > /sys/block/sda/queue/scheduler [root@yazekats-linux queue]# cat /sys/block/sda/queue/scheduler noop deadlin
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く