‘Linux/FreeBSD’ カテゴリーのアーカイブ

対話型シェルスクリプト サンプル

2010 年 7 月 29 日 木曜日

ユーザの入力されたデータをreadコマンドで読み込む。

サンプルコード ファイル名前を入力させる

入力されたファイルを消すスクリプト。

 #!/bin/sh

 echo "please input file name"
 read FILENAME
 rm $FILENAME

サンプルコード Yes/No プロンプト

 #!/bin/sh

 echo "plz input file name"
 read FNAME

 echo "remove file ? [y/n]"
 read ANS

 if [ $ANS = 'y' -o $ANS = 'yes' ]; then
   echo "rm $FNAME"
   rm $FNAME
 fi

参考までにPerlで書いた場合のサンプル。

 #!/usr/local/bin/perl

 print "plz input file name";
 my $filename = <>;
 `rm $filename`;

参考文献

詳解 シェルスクリプト UNIXの絵本 UNIXシェルスクリプトハンドブック (Technical handbook series (001))

Macbook WhiteにLinux CentOS 5.3をインストール No.2

2009 年 5 月 28 日 木曜日

NdiswrapperとUnRARのインストール

まず、NdiswrapperとUnRARをインストールします。NdiswrapperとUnRARに必要なその他のRPMはCentOSのインストールディスクに入っているはずです。NdiswrapperはWindowsのドライバをLinux上で動作させるためのソフトウェアです。

$ rpm -ivh unrar-3.7.4-1.el5.rf.i386.rpm dkms-ndiswrapper-1.48-1.el5.rf.i386.rpm dkms-2.0.17.6-1.el5.rf.noarch.rpm

無線LANドライバのインストール

BootCampのCDからWindows用のドライバをコピーしてきますます。
exeファイルをunrarで解凍し、ファイルを取り出します。

$ mkdir ~/broadcomdriver
$ cp “/media/WindowsSupport/boot camp/drivers/broadcom/broadcomxpinstaller.exe” ~/broadcomdriver
$ cd ~/broadcomdriver
$ unrar x broadcomxpinstaller.exe

infファイルをndiswrapperに読み込ませてドライバをインストールします。

$ sudo /usr/sbin/ndiswrapper -i bcmwl5.inf

$ sudo /usr/sbin/ndiswrapper -l
bcmwl5 : driver installed
device (14E4:432B) present

$ sudo /usr/sbin/ndiswrapper -m
adding “alias wlan0 ndiswrapper” to /etc/modprobe.d/ndiswrapper …

これでドライバのインストールは完了です。引き続きネットワークインターフェイスを設定します。
/etc/sysconfig/network-scripts/ifcfg-wlan0に以下の内容を設定します。

# Please read /usr/share/doc/initscripts-*/sysconfig.txt
# for the documentation of these parameters.
TYPE=Wireless
DEVICE=wlan0
HWADDR=
BOOTPROTO=dhcp
NETMASK=
DHCP_HOSTNAME=
IPADDR=
DOMAIN=
ONBOOT=yes
USERCTL=no
IPV6INIT=no
PEERDNS=yes
ESSID=
CHANNEL=Auto
MODE=Auto
WPA=yes
SECURITYMODE=open
RATE=auto

WEPを利用している場合は、暗号キーを以下のファイルに記載します。
/etc/sysconfig/network-scripts/keys-wlan0

KEY=xxxxxxxxxxxxxxxxxxxxxxxxx

WPAを利用している場合はもう少し込み入った設定が必要です。詳しくは、wpa_supplicantのマニュアルに記載されています。

設定が終わったら、最後にifupでインターフェイスを有効化します。

$ sudo /sbin/ifup wlan0

残る問題

  • 有線LANが使えない
  • 音がならない
  • デュアルモニタにできない
  • 右クリックができない
  • キーボードのアンダーバー、パイプが効かない

Macbook WhiteにLinux CentOS 5.3をインストール No.1

2009 年 5 月 25 日 月曜日

Macbook White のスペック

Intel Core 2 Duo P7350 @ 2GHz
NVIDIA GeForce 9400M
Memory 2GB
Broadcom corporation BCM4332 802.11a/b/g/n Wireless LAN Controller

下準備

  1. Mac OS X インストール ディスク。
    BootCampからWindowsのドライバを取り出す必要があるので、OS Xのインストールディスクも必要です。
  2. Cent OS インストール ディスク
    Cent OSのサイトからISOイメージをダウンロードして、DVDに焼いておきます。
    今回は64bit版ではなく、i386を選択しました。
  3. その他、ドライバ類。
    インストール直後の状態では、ドライバがインストールされていないため、ネットワークにつなぐことができません。最低限ネットワークにつなぐために必要なドライバなどをCD-Rなどに焼いておきます。

パーティションの作成

ディスクユーティリティでLinux用のパーティションを作成します。のちほどCentOSインストール時にフォーマットしなおすので、フォーマットは何でもかまいません。
partision

rEFIt ブートマネージャのインストール

rEFItをインストールすると、起動時にOSを選択できるようになります。
http://refit.sourceforge.net/

CentOSのインストール

CentOSのインストールディスクを入れて、「C」を押しながら再起動すると、ディスクからBootします。
ACPIが有効だとうまくインストーラーが立ち上がらないので、bootプロンプトでカーネルオプションを指定します。

boot : linux noapic acpi=off apm=on
install centOS5

install centOS5

swap用のパーティションがないと怒られますが無視します。

キーボードの設定

初期状態では、アンダーバー、バックスラッシュ、パイプなどのキーが効きません。
xmodmapを設定してキーを割り当てます。
以下の例はF12にパイプ、F11にバックスラッシュ、F9にアンダーバーを割り当てています。
他のキーに割り当てたい場合はxevコマンドでkeycodeを確認できます。

~/.xmodmap
keycode 75 = underscore
keycode 95 = backslash
keycode 96 = bar

# xmodmapの設定読み込み
$ xmodmap ~/.xmodmap

続きます。

参考文献

VistaもXPもMac上で動かせる!Windows on Mac パーフェクトガイド2009
VistaもXPもMac上で動かせる!Windows on Mac パーフェクトガイド2009
Mac・Windows・Linuxが1台で使える
Mac・Windows・Linuxが1台で使える

いつものドットファイル(.bashrc, .vimrc, .screenrc)

2007 年 11 月 26 日 月曜日

.bashrc

export TERM=vt100-color
export LANG=ja_JP.UTF8

export HISTSIZE=10000
export HISTFILESIZE=10000
export HISTCONTROL=ignoredups
export PATH=$PATH:$HOME/bin:/sbin/:/usr/sbin

#prompt with coloring hostname
export PS1="[\u@\[\033[32m\]\h\[\033[0m\] \W]\\$ "

alias vi='vim'
#with coloring and long format
alias ll='ls -lGa'
#with coloring
alias ls='ls -G'

#keychain
keychain $HOME/.ssh/identity
source $HOME/.ssh-agent-$HOSTNAME

.screenrc

 escape ^z^z
 term xterm-color
 vbell off
 startup_message off
 autodetach on
 hardstatus alwayslastline "[%02c] %`%-w%{=b bw}%n %t%{-}%+w"

.vimrc

set nobackup
set showmode
set tabstop=4
set shiftwidth=4
set expandtab
set showmatch
set backspace=2
set number
set ignorecase

syntax on

nnoremap j gj
nnoremap k gk
nnoremap <Down> g<Down>
nnoremap <Up> g<Up>

参考URL

Intelコンパイラicc ベンチマーク

2006 年 3 月 26 日 日曜日

IntelCompilerとは

  • Intelが作ってるコンパイラ
  • IntelのCPU用にいろいろ最適化が行われるためパフォーマンスが向上する

IntelCompilerのインストール

  1. Intel® C++ Compiler for Linuxのダウンロードページからダウンロードできます。容量が200MB近くあるので注意が必要です。
  2. 個人利用の場合は、「Free Non-comercial Download」を選択します。
    Intel Compiler ダウンロード

    Interl Compiler ダウンロード

  3. 注意事項に「Accept(同意)」します
    Intel Compiler ダウンロード

    Intel Compiler ダウンロード

  4. インストール
    $ ./install.sh
    $ source /bin/iccvars.sh(.csh)
    $ source /bin/idbvars.sh(.csh)
  5. ldconfigの設定。icc用のライブイラリをライブラリのパスに加える
    # vi /etc/ld.so.conf.d/icc.conf
    /opt/intel/cc/9.0/lib ← 追記

    # /sbin/ldconfig

iccのgccとの比較

apache + PHPをgcc/iccでコンパイルし、pukiwikiのindex.phpを1秒間に何回表示できるか計測した。

ベンチマーク環境

CPU Intel(R) Pentium(R) 4 CPU 1.60GHz cpuinfo
Memory 512MB
OS CentOS4 Linux 2.6.9-34.EL
gcc gcc バージョン 3.4.5
icc Version 9.0
apache Apache/1.3.34 (Unix)
pukiwki 1.4.6
PHP 4.4.2 (apacheにstatic リンク)

apacheの設定

KeepAliveをONにしてTCPのハンドシェイクのオーバーヘッドを無視できるようにした。
これでiccの効果をなるべくはっきり示せると思う。

MaxClients 150
KeepAlive On

コンパイルオプション

コンパイルオプションは-O3フラグのみ。

gccの場合のオプション

$ export CFLAGS=”-O3″; ./configure; make

iccの場合のオプション。環境変数CCにiccを指定すればiccでコンパイルされる。

$ export CC=icc; CFLAGS=”-O3″
$ ./configure; make

ベンチマーク結果

結果、iccのほうが16%ほど多くページを表示できた。CC=iccとするだけでも、とりあえず効果はあるようだ。
Apacheの速度がボトルネックになっている場合には、iccを試してみる価値はあると思う。

gccとicc比較

gccとicc比較

参考文献


参考URL

シェルスクリプト入門 testコマンドリファレンス

2006 年 1 月 26 日 木曜日

テストコマンド 一覧

シェルスクリプトでファイルが存在してるか等を確かめるのにつかえる。

-b ファイル ファイルがブロック特殊ファイルのとき真。
-c ファイル ファイルがキャラクタ特殊ファイルのとき真。
-d ファイル ファイルがディレクトリのとき真。
-e ファイル 指定したファイルが存在するとき真。
-f ファイル ファイルがノーマルファイルのとき真。
-g ファイル ファイルのセットGIDビットが立っているとき真。
-h ファイル ファイルがシンボリックリンクのとき真。
-k ファイル ファイルのstickyビットが立っているとき真。
-L ファイル ファイルがシンボリックリンクのとき真。
-p ファイル ファイルが名前付きパイプ(FIFO)のとき真。
-r ファイル ファイルが読み出し可能のとき真。
-s ファイル ファイルの長さが1バイト以上あるとき真。
-t [u] ファイルのディスクリプタn(指定しなければ1) が端末につながっているとき真。
-u ファイル ファイルのセットUIDビットが立っているとき真。
-w ファイル ファイルが書き込み可能のとき真。
-x ファイル ファイルが実行可能のとき真。
-a 2つの条件評価式の論理積(and)をとる
-o 2つの条件評価式の論理和(or)をとる

サンプル

 #!/bin/sh

 if [ -d ${HOME}/temp ] ; then
  mkdir ${HOME}/temp
 fi 

例. tmpに書き込めるか確かめる(wrが立ってるか見る)

 #!/bin/sh

 if [ -w /tmp/ -a -x /tmp/ ]; then
   echo writable
 else
   echo not writable
 fi

参考文献

詳解 シェルスクリプト 入門bash 第3版 bashクックブック

Expect の使い方

2006 年 1 月 22 日 日曜日

expectとは

LinuxやFreeBSDで利用できる、sshやSQL等、対話的な通信を自動化するツールです。

expectでsshするサンプル

sshで接続して、lsを実行。

 #!/usr/bin/expect

 set timeout 5
 spawn ssh somehost.example.com
 expect "password:"
 send "YOUR PASSWD\r"
 expect "Last login"
 send "ls\r"
 interact

expectでメールを送信するサンプル

sendmailをexpectで叩いてメール送信。テスト送信を何回もやるとき便利。

 #!/usr/bin/expect

 set timeout 5
 spawn telnet somehost.example.com 25
 expect "somehost.example.com"
 send "helo somehost.example.com\n"
 expect "pleased to meet you"
 send "mail from:someone@someplace.example.com\n"
 expect "Sender ok"
 send "rcpt to:yourfriend@somehost.example.com\n"
 expect "Recipient ok"
 send "data\n"
 expect "itself"
 send "This is Message for TEST\n"
 send ".\n"
 expect "accepted for delivery"
 send "quit\n"

expect のコマンド一覧

コマンド 説明
set timeout N タイムアウトを設定する(単位は秒)
設定したN秒以上、標準入力から応答がないと、expectは通信を終了する。
-1で、タイムアウトをナシにできる。
spawn command spawnは新しいジョブを作成し、expectプログラムの
入出力をそのジョブに接続する。
ジョブへの送信はsend、受信はexpectとなる。
expect 文字列 expectコマンドは標準入力データが正規表現での文字列に
マッチするまで次のプログラム行の実行を停止し、データを標準出力に出力します。
send 文字列 文字列をジョブへ出力します
interact interactはspawnで作成されたジョブの標準入出力を、キーボードと画面にする。
すなわち通常の通信になる。

参考文献

LinuxサーバHacks―プロが使うテクニック&ツール100選 Linuxコマンドトレーニングブック

参考URL

Test Page. Yoshifumi Tanaka

TeraTerm マクロ SSH接続 サンプル

2006 年 1 月 21 日 土曜日

TeraTerm Macroの作成方法。キーボードからの入力を自動化することができる。

基本的なコマンド

コマンド 記述例 説明
connect connect ‘ホスト名:ポート’ ホストの指定されたポートに接続する
sendln sendln ‘文字列’ 文字列をホストに送る。
wait wait ‘文字列’ 文字列がホストから送られてくるまで待つ。対話型のプログラムの場合、
適時waitを入れないと、ホストとの同期がうまくいかなくなる。
; (セミコロン) ; コメント コメント

マクロのサンプル

SSHでサーバへ接続し、dateコマンドを打つマクロ。

; myhost.example.jp へssh接続する。
connect 'myhost.example.jp /ssh /l /auth=password /user=username /passwd=mypassword'

; コマンドプロンプトを待つ
wait '$ '

; date コマンドを実行
sendln 'date'

; 切断
; disconnect 0 にすると確認せずに切断
disconnect 1

実行方法

TeraTerm/TTSSHから実行

ControllメニューのMacroから実行する。

マクロの実行

マクロの実行

コマンドプロンプトから実行する方法

ttpmacro.exeにマクロを記述したファイルを渡す。

“C:\Program Files\teraterm\ttpmacro.exe” “C:\macro.ttl”

参考URL

Linux watch コマンドで定期的にコマンドを実行する

2006 年 1 月 21 日 土曜日

watch コマンドとは

定期的にコマンドを実行するコマンド。
crontabの実行結果がシェルに出る点がcronとは異なる。

watchコマンドの使い方

$ watch -n 秒数 定期的に実行したいコマンド

例1: apacheのログを監視する。

CGIを作成しながら、エラーログを監視する。

$ watch -n 5 “tail error_log”

※ tail -f で同じようなことができる。

例2: ネットワークを監視する。

192.168.0.2 からの接続を監視する例。

$ watch -n 5 “netstat -an | grep 192.168.0.2″

watchコマンド相当のシェルスクリプト

手元のFreeBSDにはwatchコマンドはインストールされていなかったので、同等のシェルスクリプトを書いた。

 #!/bin/sh

 while true
 do
         eval $1
         sleep 5
 done

使い方

$ watch.sh “tail error_log”

参考文献

詳解 シェルスクリプト UNIXの絵本 UNIXシェルスクリプトハンドブック (Technical handbook series (001))

ディスク容量を表示 linux df,du,quotaコマンド

2006 年 1 月 21 日 土曜日

ディスクの容量を表示するコマンドの使い方。

df コマンド

ディスクに使用率を表示する。

$ df
/dev/sda1 7224600 3288748 3568772 48% /
none 257716 0 257716 0% /dev/shm

du コマンド

カレントディレクトリから再帰的にディレクトリの容量を表示する。

「-h」はhuman readable。単位をつけてくれる。

$ du -h

「-d」で階層の深さを指定できる。現在のディレクトリあるディレクトリおよびファイルの容量が知りたい場合。

$ du -h -d 1

quota コマンド

自分のディスクの制限容量(quota)を表示する。制限がない場合の出力例。

$ quota
#Disk quotas for user hogehoge (uid 11650): none

参考文献

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