ビールとポップコーンと映画 ラストマイルを見た。良い映画だった。 映画館でべそべそ泣いて、鼻を啜りながら車で帰った。感想はこのブログでは書かない。みんな映画館に行って感じてみてほしい。 帰ってからツイッターで感想を漁り、うんうん、わかるわかる、そうだよね、とまた映画を思い出して…
サーバ台数が増えてくると、例えば同じ種類のサーバをスケールアウトしているとき、1台だけ設定ミスがあったとしてもなかなか気付きづらくなります。サービスの安定稼動のためにはこういった些細なミスは完全に潰しておく必要があります。そこで今回はサーバ間の設定ファイル差異を比較するスクリプトを作りましたのでご紹介してみます。 【前準備】 まずはこちらでも記したような方法で、パスワードなしで各サーバにSSH接続できるようにしておいてください。 【サーバ間の設定ファイル差異を比較するスクリプト】 下記スクリプトをどこかに保存してください。ファイル名は便宜上「filediff.sh」とでもしておきます。そして、今回比較するファイル名を羅列し、かつサーバ番号(下記の例だと10.0.0.1の設定ファイルを10.0.0.2~10の設定ファイルと比較しています)を書き換えてください。 $ cat > filedif
まずは事の発端を説明します。 /etc/passwdファイルは、ユーザー情報が1行に1ユーザー分ずつ書かれたテキストファイルです。1行はコロンで区切られた7つのフィールドからなります。僕は、最初のフィールドであるユーザー名と、最後(7番目)のフィールドであるログインシェルだけを確認したかったのです。cat /etc/passwd として、直接目で見るだけ*1でもユーザー名とログインシェルを読み取れるのですが、ちょっと辛い。なるべく見やすく表示したいのです。 この課題を狂言回しにして、Linux/Unixコマンドラインでちょっとした事をやるための地味なコマンド達とシェル構文を紹介します。「スクリプト言語(例えばperl)を使えばいいじゃねえか」というご意見・ご指摘はゴモットモだと思いますが、今回は聞く耳持ちません。(スクリプト言語処理系ではない)コマンドとシェルの範囲内でのもっと良い方法は是
シェル組込変数 RANDOM bashやzshなど一部のシェルでは特殊な変数 RANDOM があり、参照する毎に範囲の小さい整数を得ることが出来ます。 $ echo $RANDOM 30940 $ echo $((RANDOM % 100)) 22 jot(1) jot(1)は連番や乱数を出力するプログラムです。出力回数や範囲を指定出来るのでなかなか使い出はあります。deb系では athena-jot パッケージをインストールします。 $ jot -r 1 10 99 72 $ jot -r 10 1000 9999 8881 2834 3537 5889 7430 9962 4905 9548 3575 9762 awk awkの関数 rand() で0–1の範囲の実数の乱数を扱えます。srand() で乱数の初期化することを忘れずに。 $ awk 'BEGIN{srand();prin
exp で 1文字を対象にしたいのであれば ?([a-f]) のようにクラスを併用することも可能。必ずしも `|' を使わなければならないわけではない。また、正規表現は ?(bash@(ref)) のように入れ子にすることもできる。 Bashで正規表現(2) ([[ =~ ]]オペレータ) 二重の `[[' を使い比較演算子に `=~' を使うと、右辺は拡張正規表現とみなされる。前項とは異なりこちらは本物の正規表現だ。面白いのは、マッチ部分が BASH_REMATCH という配列にアサインされるという点。 VAR=$(LANG=C date +'%c') # VAR='Wed Dec 22 22:51:41 2010' DAYOFWEEK=Wed PATTERN='^'$DAYOFWEEK' ([[:alpha:]]{3}) [[:digit:]]{2} ([0-9:]+)' [[ $VA
はじめに この記事ではUNIXサーバ管理という側面からのシェルスクリプトプログラミングを取り上げます。またシェルスクリプトを自作するときのポイントも解説します。 UNIXサーバを管理するときは、道具としてのシェルスクリプトが重宝します。常時ログを監視するにしても、入力するコマンドをまとめるにしても、UNIXに用意されているコマンドを有効活用するにはシェルスクリプトが効果的です。 シェルスクリプトは、コマンドを入力する作業の延長線でプログラミングができるという容易な側面を持っていますが、正しく理解しようとすると多くのルールやコマンドを覚えなければならないというやっかいな側面も持っています。 シェルスクリプトを習得する方法はいくつかあります。じっくり時間がとれるならどの学習方法でもよいのですが、入社後にUNIXサーバを管理することになり、緊急に使えるようにならなければならないという逼迫した状況
sh (/bin/sh) による配列操作 例えば、表を引いて値を変換しなければならないといったケースでは、sh スク リプトで1次元配列が欲しくなるときがあります。 korn sh や最近の bash では1次元配列をサポートしていますし、複雑な操作な ら、awk や perl といった外部のプログラミング言語を起動するのが簡単ですが、 /bin/sh や POSIX 1003.1 の sh の枠組でも、位置パラメータを使うと、比較的 素直な扱いができます。 インデックス値に対応する値を求める 例えば、12 の要素 Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec を持つ1次元配列を考え、そのインデックスを 1, 2, 3, .. 12 とします。この 配列の i 番目の要素を変数 v の値として取り出す操作として最も簡単なのは、 次の方法では
Time to Read 5分 ※ 以下の記事のシェル処理系はすべてbashです。 たとえば、自分で作った「DoHoge.rb」というバッチについて、「-d {日付}」という起動方法ができるんだけれど、60日前から今日までの日付を順に指定して起動したいなあ~ と思ったとき、僕はこうした。 seqコマンドで60~0の数字のセットを作る。 1 2 3 4 5 6 7 8 $ seq 60 -1 0 60 59 58 57 56 #... 0 その出力をxargs経由でdateに噛ませて、日付のセットにする 1 2 3 4 5 6 7 8 $ seq 60 -1 0 | xargs -i date -d -{}days +'%F' 2010-08-06 2010-08-07 2010-08-08 2010-08-09 2010-08-10 #... 2010-10-05 その出力をもう一回xar
pure bashでBash on Railsを作るネタ企画です。今回はちょっとした小ネタ。 bashでlocal宣言した変数って、Perlでlocal宣言した変数と同じく、動的スコープなんですね。 % cat local1.sh #!/bin/bash function print_a() { echo "$a" } function local_a() { local a='Good bye' print_a } a='Hello' print_a local_a print_a % bash local1.sh Hello Good bye Hello % bash自身が使う特殊な変数も、このとおり動的スコープ。 % cat local2.sh #!/bin/bash function print_1st() { set $1 echo $1 } function local_1st
The main aim is to document the hurdles that most of us face as UNIX/Linux/BSD sys admin in our day today life. シェルまたはシェルスクリプトで乱数を使いたいと思うことが時々ある。コマンドをまとめていくという軽い利用を越えて、プログラミング的な要素が強くなってくる場合にはそうした要求がでてくる。しかしシェルスクリプトは一般的なプログラミング言語ではないため、乱数を生成するような関数は提供されていない。 シェルやシェルスクリプトで乱数を使う方法はいくつかあるが、Bash Shell Generate Random Numbers - nixCraftにおいて紹介されている2つの方法が、ひとつは簡単な方法、もうひとつはシェルに左右されにくい互換性の高い方法として興味深い。紹介されている
はてなグループの終了日を2020年1月31日(金)に決定しました 以下のエントリの通り、今年末を目処にはてなグループを終了予定である旨をお知らせしておりました。 2019年末を目処に、はてなグループの提供を終了する予定です - はてなグループ日記 このたび、正式に終了日を決定いたしましたので、以下の通りご確認ください。 終了日: 2020年1月31日(金) エクスポート希望申請期限:2020年1月31日(金) 終了日以降は、はてなグループの閲覧および投稿は行えません。日記のエクスポートが必要な方は以下の記事にしたがって手続きをしてください。 はてなグループに投稿された日記データのエクスポートについて - はてなグループ日記 ご利用のみなさまにはご迷惑をおかけいたしますが、どうぞよろしくお願いいたします。 2020-06-25 追記 はてなグループ日記のエクスポートデータは2020年2月28
LinuxなどのX環境では、コマンドラインで「xdg-open url」のように実行することにより、WebブラウザでURLを開ける。Freedesktop.orgのPortlandプロジェクトで開発されているもので、わりと汎用的らしい。以下、xdg-openの中身のメモ。 xdg-openはシェルスクリプト。判断ロジックは以下のとおり。 環境変数KDE_FULL_SESSIONがtrueならKDEと判断し、kfmclientを呼ぶ 環境変数GNOME_DESKTOP_SESSION_IDが設定されていればGNOMEと判断し、gnome-openを呼ぶ 「xprop -root _DT_SAVE_MODE」の値が"xfce4"であればXfce4と判断し、exo-openを呼ぶ そうでなければ、次項以降へ。OSによって実装が違うようだ Red Hat系Linuxで条件に合わない場合 Red H
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く