2010年12月31日

lspci(8) - 使い方

lspci(8)の使い方の例。

概要

pciデバイスの認識状況を表示するコマンドツール

使い方

NEC製VersaProR VA15X(PC-VA15XRF)での実行結果

# lspci -v
00:00.0 Host bridge: ATI Technologies Inc RS200/RS200M AGP Bridge [IGP 340M] (rev 02)
        Flags: bus master, 66MHz, medium devsel, latency 64
        Memory at f8000000 (32-bit, prefetchable) [size=64M]
        Memory at f4800000 (32-bit, prefetchable) [size=4K]
        Capabilities: [a0] AGP version 2.0

00:01.0 PCI bridge: ATI Technologies Inc PCI Bridge [IGP 340M] (prog-if 00 [Normal decode])
        Flags: bus master, 66MHz, medium devsel, latency 99
        Bus: primary=00, secondary=01, subordinate=01, sec-latency=68
        I/O behind bridge: 0000a000-0000afff
        Memory behind bridge: f4500000-f45fffff
        Prefetchable memory behind bridge: f6000000-f7ffffff

00:02.0 USB Controller: ALi Corporation USB 1.1 Controller (rev 03) (prog-if 10 [OHCI])
        Subsystem: NEC Corporation Unknown device 8172
        Flags: bus master, medium devsel, latency 64, IRQ 11
        Memory at f4400000 (32-bit, non-prefetchable) [size=4K]
        Capabilities: [60] Power Management version 2

00:04.0 Multimedia audio controller: ALi Corporation M5451 PCI AC-Link Controller Audio Device (rev 02)
        Subsystem: NEC Corporation Unknown device 81bb
        Flags: bus master, medium devsel, latency 64, IRQ 11
        I/O ports at 8800 [size=256]
        Memory at f4402000 (32-bit, non-prefetchable) [size=4K]
        Capabilities: [dc] Power Management version 2

00:06.0 Bridge: ALi Corporation M7101 Power Management Controller [PMU]
        Subsystem: NEC Corporation Unknown device 7101
        Flags: medium devsel

00:07.0 ISA bridge: ALi Corporation M1533/M1535/M1543 PCI to ISA Bridge [Aladdin IV/V/V+]
        Subsystem: ALi Corporation ALi M1533 Aladdin IV/V ISA Bridge
        Flags: bus master, medium devsel, latency 0
        Capabilities: [a0] Power Management version 1

00:0a.0 CardBus bridge: Texas Instruments PCI1520 PC card Cardbus Controller (rev 01)
        Subsystem: NEC Corporation Unknown device 81c4
        Flags: bus master, medium devsel, latency 168, IRQ 11
        Memory at f4403000 (32-bit, non-prefetchable) [size=4K]
        Bus: primary=00, secondary=02, subordinate=05, sec-latency=176
        Memory window 0: 50000000-51fff000 (prefetchable)
        Memory window 1: 52000000-53fff000
        I/O window 0: 00001000-000010ff
        I/O window 1: 00001400-000014ff
        16-bit legacy interface ports at 0001

00:0a.1 CardBus bridge: Texas Instruments PCI1520 PC card Cardbus Controller (rev 01)
        Subsystem: NEC Corporation Unknown device 81c4
        Flags: bus master, medium devsel, latency 168, IRQ 11
        Memory at f4404000 (32-bit, non-prefetchable) [size=4K]
        Bus: primary=00, secondary=06, subordinate=09, sec-latency=176
        Memory window 0: 54000000-55fff000 (prefetchable)
        Memory window 1: 56000000-57fff000
        I/O window 0: 00001800-000018ff
        I/O window 1: 00001c00-00001cff
        16-bit legacy interface ports at 0001

00:0b.0 USB Controller: ALi Corporation USB 1.1 Controller (rev 03) (prog-if 10 [OHCI])
        Subsystem: NEC Corporation Unknown device 8173
        Flags: bus master, medium devsel, latency 64, IRQ 11
        Memory at f4405000 (32-bit, non-prefetchable) [size=4K]
        Capabilities: [60] Power Management version 2

00:0f.0 IDE interface: ALi Corporation M5229 IDE (rev c4) (prog-if fa)
        Subsystem: NEC Corporation Unknown device 8171
        Flags: bus master, medium devsel, latency 64
        I/O ports at 8080 [size=16]
        Capabilities: [60] Power Management version 2

00:12.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+ (rev 10)
        Subsystem: NEC Corporation Unknown device 8192
        Flags: bus master, medium devsel, latency 64, IRQ 11
        I/O ports at 9c00 [size=256]
        Memory at f4406000 (32-bit, non-prefetchable) [size=256]
        Capabilities: [50] Power Management version 2

01:05.0 VGA compatible controller: ATI Technologies Inc Radeon IGP 330M/340M/350M (prog-if 00 [VGA controller])
        Subsystem: NEC Corporation Unknown device 81bc
        Flags: bus master, stepping, fast Back2Back, 66MHz, medium devsel, latency 66, IRQ 11
        Memory at f6000000 (32-bit, prefetchable) [size=32M]
        I/O ports at a000 [size=256]
        Memory at f4500000 (32-bit, non-prefetchable) [size=64K]
        [virtual] Expansion ROM at f4520000 [disabled] [size=128K]
        Capabilities: [58] AGP version 2.0
        Capabilities: [50] Power Management version 2

以上

2010年12月30日

setsebool(8) - 使い方

setsebool(8)の使い方の例

概要

SELinuxの組み込みルールの有効/無効状態(boolean)を設定するコマンドツール

getsebool(8) - 使い方

getsebool(8)の使い方の例。

概要

SELinuxの組み込みルールの有効/無効状態(boolean)を確認するコマンドツール

2010年12月23日

apt-get(8) - 使い方

apt-get(8)の使い方の例

概要

Debian系(Ubuntuなど)のパッケージ管理用のコマンドツール。

使い方

インストール
# apt-get install <パッケージ名>

アップデート
# apt-get update
# apt-get upgrade

削除
# apt-get remove <パッケージ名>

以上

service(8) - 使い方

service(8)の使い方の例

概要

常駐プログラムの起動、停止などを行うコマンドツール

使い方

サービスを起動する(httpdの例)

[root@localhost ~]# service httpd status
httpd は停止しています
[root@localhost ~]# service httpd start
httpd を起動中:                                            [  OK  ]
[root@localhost ~]# (service --status-all | grep httpd) 2> /dev/null
httpd (pid  16078) を実行中...
[root@localhost ~]# 

サービスを停止する(httpdの例)

[root@localhost ~]# service httpd status
httpd (pid  16018) を実行中...
[root@localhost ~]# service httpd stop
httpd を停止中:                                            [  OK  ]
[root@localhost ~]# (service --status-all | grep httpd) 2> /dev/null
httpd は停止しています
[root@localhost ~]# 

以上

2010年12月14日

SELinuxその1 - 使い方

SELinuxの使い方の例。

概要

SELinuxの使い方その1。

使い方

セキュリティコンテキストの見方 兼 ユーザのセキュリティコンテキストを確認する

SELinuxが有効な状態で、id -Zを実行するとユーザのセキュリティコンテキストが確認出来る。

$ id -Z
user_u:system_r:initrc_t:s0

それぞれ左から順番に、ユーザ識別子、ロール識別子、タイプ識別子、MLS識別子を表す。

user_u   ユーザ識別子
system_r ロール識別子
initrc_t タイプ識別子
s0       MLS識別子

プロセスのセキュリティコンテキストを確認する

$ ps -Z
LABEL                             PID TTY          TIME CMD
user_u:system_r:initrc_t:s0       987 pts/1    00:00:00 ps
user_u:system_r:initrc_t:s0     32623 pts/1    00:00:00 bash

ファイルのセキュリティコンテキストを確認する

$ ls -Z
drwxr-xr-x  owner owner system_u:object_r:file_t:s0      Desktop
drwx------  owner owner system_u:object_r:file_t:s0      mail

SELinuxの動作状態を確認する

$ /usr/sbin/getenforce
Enforcing

SELinuxの動作状態を変更する

# setenforce Permissive
# getenforce
Permissive
# setenforce Enforcing
# getenforce
Enforcing

SELinuxを有効/無効にする

/etc/sysconfig/selinuxファイル内のSELINUX=の行を直接編集。変更後はOS再起動。

(有効時の記述1)
SELINUX=enforcing

(有効時の記述2)
SELINUX=permissive

(無効時の記述)
SELINUX=disable

以上



2010年12月7日

e2label(8) - 使い方

e2labelの使い方の例

概要

ファイルシステムにラベルを付与するコマンドツール

使い方

パーティションを指定しラベルを付ける

# e2label /dev/sdb1

# e2label /dev/sdb1 archives
# e2label /dev/sdb1
archives
# 

以上

mke2fs(8)の使い方の例

概要

ファイルシステムを作成するコマンドツール

使い方

ext3ファイルシステムを作成する
# mke2fs -j /dev/sdb1
mke2fs 1.39 (29-May-2006)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
8962048 inodes, 17921815 blocks
896090 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=4294967296
547 block groups
32768 blocks per group, 32768 fragments per group
16384 inodes per group
Superblock backups stored on blocks: 
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
        4096000, 7962624, 11239424

Writing inode tables: done                            
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 27 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
#
以上

tar(1)の使い方の例

概要

ファイルやディレクトリをアーカイブするコマンドツール。

使い方

(1)ファイルを圧縮保存する
# ls -l Cent*img*
-rw------- 1 root root 10485760000 11月 29 14:45 CentOS5.5ga.img
# tar zcvf CentOS5.5ga.img.tgz CentOS5.5ga.img 
CentOS5.5ga.img
# ls -l Cent*img*
-rw------- 1 root root 10485760000 11月 29 14:45 CentOS5.5ga.img
-rw-r--r-- 1 root root  1175757117 12月  7 09:10 CentOS5.5ga.img.tgz
以上

2010年12月6日

vncserverの設定例 - CentOS/RHEL

vncserverの設定方法を示す。


概要

rootユーザーとownerユーザーを設定する例を記載。

内容

/etc/sysconfig/vncserversの編集

(変更後)
VNCSERVERS="1:root 2:owner"
VNCSERVERARGS[2]="-geometry 1024x768 -nolisten tcp -nohttpd"

(変更前)
# VNCSERVERS="2:myusername"
# VNCSERVERARGS[2]="-geometry 800x600 -nolisten tcp -nohttpd -localhost"

vncパスワードの設定

# su - owner
$ vncpasswd
Password:
Verify:
$ exit
# vncpasswd
Password:
Verify:

vncserverサービスの有効化

# chkconfig --list | grep vncserver
vncserver       0:off   1:off   2:off   3:off   4:off   5:off   6:off
# chkconfig vncserver on
# chkconfig --list | grep vncserver
vncserver       0:off   1:off   2:on    3:on    4:on    5:on    6:off
#

vncserverサービスの起動

# service vncserver start
VNC サーバー を起動中: 1:root xauth:  creating new authority file /root/.Xauthority
New 'localhost.localdomain:1 (root)' desktop is localhost.localdomain:1

Creating default startup script /root/.vnc/xstartup
Starting applications specified in /root/.vnc/xstartup
Log file is /root/.vnc/localhost.localdomain:1.log

2:owner xauth:  creating new authority file /home/owner/.Xauthority
New 'localhost.localdomain:2 (owner)' desktop is localhost.localdomain:2

Creating default startup script /home/owner/.vnc/xstartup
Starting applications specified in /home/owner/.vnc/xstartup
Log file is /home/owner/.vnc/localhost.localdomain:2.log

                                                           [  OK  ]
#

~/.vnc/xstartupの編集

以下のコマンドラインからxstartupを編集

(rootユーザの場合)
# vi ~/.vnc/xstartup
(ownerユーザの場合)
# su - owner
$ vi ~/.vnc/xstartup
$ exit
(編集前)
#!/bin/sh

# Uncomment the following two lines for normal desktop:
# unset SESSION_MANAGER
# exec /etc/X11/xinit/xinitrc
[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey
vncconfig -iconic &
xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
twm &

(編集後)
#!/bin/sh

# Uncomment the following two lines for normal desktop:
unset SESSION_MANAGER
exec /etc/X11/xinit/xinitrc
[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey
vncconfig -iconic &
xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
twm &

vncserverの再起動

# service vncserver stop
VNC サーバー を停止中: 1:root 2:owner                      [  OK  ]
# service vncserver start
VNC サーバー を起動中: 1:root
New 'localhost.localdomain:1 (root)' desktop is localhost.localdomain:1

Starting applications specified in /root/.vnc/xstartup
Log file is /root/.vnc/localhost.localdomain:1.log

2:owner
New 'localhost.localdomain:2 (owner)' desktop is localhost.localdomain:2

Starting applications specified in /home/owner/.vnc/xstartup
Log file is /home/owner/.vnc/localhost.localdomain:2.log

                                                          [  OK  ]
#

ファイアウォール設定の追加

以下のポートに対し許可設定する

  • tcp/5901 <- "1:root"定義で設定されるポート
  • tcp/5902 <- "2:owner"定義で設定されるポート

VNCクライアントでの接続方法

それぞれ以下接続先を指定する

rootユーザへの接続
localhost.localdomain:1

ownerユーザへの接続
localhost.localdomain:2

参考

以上

2010年11月27日

whereis(1)

whereis(1)の使い方の例。

概要

 コマンドのバイナリ・ソース・man ページの場所を示すプログラム

使い方

mke2fsの情報を表示
 
# whereis mke2fs

mke2fs: /sbin/mke2fs /etc/mke2fs.conf~ /etc/mke2fs.conf /usr/share/man/man8/mke2fs.8.gz
以上

smartctl(8) - 使い方

smartctl(8)の使い方の例。


概要
 
SMART Diskを制御、状態表示するコマンドツール。
 
使い方
 
ディスク情報の表示(SAS)
 
# smartctl -i /dev/sda

smartctl version 5.38 [x86_64-redhat-linux-gnu] Copyright (C) 2002-8 Bruce Allen

Home page is http://smartmontools.sourceforge.net/
Device: FUJITSU  MAY2073RC        Version: 5204

Serial number: XXXXXXXXXXXX

Device type: disk

Transport protocol: SAS

Local Time is: Thu Nov 25 15:04:50 2010 JST

Device supports SMART and is Enabled

Temperature Warning Disabled or Not Supported

#
エラー情報の表示
# smartctl -l error /dev/sda
smartctl version 5.38 [x86_64-redhat-linux-gnu] Copyright (C) 2002-8 Bruce Allen
Home page is http://smartmontools.sourceforge.net/

Error counter log:

           Errors Corrected by           Total   Correction     Gigabytes    Total

               ECC          rereads/    errors   algorithm      processed    uncorrected

           fast | delayed   rewrites  corrected  invocations   [10^9 bytes]  errors

read:          0        8         0         0          0       3385.351           0

write:         0       15         0         0          0       3385.824           0

verify:        0        2         0         0          0        574.408           0
Non-medium error count:        0 #
以上

which(1)

which(1)の使い方の例

概要

プログラムのフルパスを表示するコマンドツール

使い方

mke2fsのフルパスを表示
# which mke2fs
/sbin/mke2fs
以上

xhost(1)の使用例

xhost(1)の使い方の例。

概要

Xサーバへのアクセス制御を設定するコマンドツール。

使い方

現在のアクセス制御状態を確認(初期状態)
# xhost
access control enabled, only authorized clients can connect
SI:localuser:root
アクセス制御を無効化
# xhost +
access control disabled, clients can connect from any host
# xhost
access control disabled, clients can connect from any host
SI:localuser:root
アクセス制御を有効化
# xhost -
access control enabled, only authorized clients can connect
ホスト'192.168.1.1'を一覧に登録
# xhost +192.168.1.1
192.168.1.1 being added to access control list
# xhost
access control enabled, only authorized clients can connect
INET:192.168.1.1
SI:localuser:root
ホスト'192.168.1.1'を一覧から削除
# xhost -192.168.1.1
192.168.1.1 being removed from access control list
# xhost
access control enabled, only authorized clients can connect
SI:localuser:root
以上

aptitude(8) の使用例

aptitude(8)の使い方の例。

概要
Debian系のLinuxで使われるパッケージ管理のコマンドツール。 
使い方
インストール

  • sshをインストール      
    # aptitude install ssh
  • gccをインストール    
    # aptitude install gcc
    
アップデート
  • 安全なアップデート(パッケージ削除をともなうアップデートはしない)    
    # aptitude update
    ...
    # aptitude safe-upgrade
    ...
アンインストール
  • gccをアンインストール
    # aptitude remove gcc
以上

2010年11月24日

ココログ過去記事を簡単に修正したい

過去記事を眺めていると時々誤字・脱字を見つける。修正するには、管理画面にログインし、修正したい記事を一覧から探し出し、編集画面を開くのだが、手間がかかる。ワンアクションで編集画面に移る方法を紹介しているブログを見つけたので紹介する。役に立つ。



ココログ過去記事編集用Bookmarklet 4 (全プラン対応版)
以上

2010年11月23日

参考文献 - 日本語マニュアルページ

日本語マニュアルページの大元。


プロジェクト名:JM Project

URL:http://linuxjm.sourceforge.jp/

以上

dd(1)の使用例

概要

ファイルをコピーするコマンドラインツール。

使い方

DVDをリッピングする
# dd if=/dev/dvd of=./rhel6dvd.iso
6702400+0 records in  
6702400+0 records out
3431628800 bytes (3.4 GB) copied, 633.842 seconds, 5.4 MB/s

(bsオプションを付けてみる)

# dd if=/dev/dvd of=./rhel6dvd.iso bs=1MB  
3431+1 records in
3431+1 records out  
3431628800 bytes (3.4 GB) copied, 631.592 seconds, 5.4 MB/s
#
以上

syslogd(8) の使用例

syslogd(8) - 使い方


syslogd(8)の使い方の例を示す。

概要

システムで発生したメッセージを仕訳・記録する常駐サービス。

使い方

Solarisシステムの様にメッセージのファシリティとプライオリティを表示したい場合

(1) /etc/sysconfig/syslogのSYSLOGD_OPTIONSに-SSを追加

SYSLOGD_OPTIONS="-m 0" → SYSLOGD_OPTIONS="-SS -m 0" 

(2) 再起動

# service syslog restart
カーネルロガーを停止中:                                    [  OK  ]
システムロガーを停止中:                                    [  OK  ]
システムロガーを起動中:                                    [  OK  ]
カーネルロガーを起動中:                                    [  OK  ] 
#

(3)メッセージを確認

(-SS追加後) 
Nov 22 10:21:08 <syslog.info> localhost syslogd 1.4.1: restart.
(追加前) 
Nov 21 04:02:03 localhost syslogd 1.4.1: restart.

※CentOS5.5 / sysklogd-1.4.1-46.el5 で確認

notice未満のメッセージを抑制

(1)/etc/syslog.confを編集

*.info;mail.none;authpriv.none;cron.none                /var/log/messages
   ↓
*.notice;mail.none;authpriv.none;cron.none                /var/log/messages

(2)再起動

# service syslog restart
カーネルロガーを停止中:                                    [  OK  ]
システムロガーを停止中:                                    [  OK  ]
システムロガーを起動中:                                    [  OK  ]
カーネルロガーを起動中:                                    [  OK  ]
#

(3)メッセージを確認

以下が出なくなった。

Nov 22 10:36:25 localhost snmpd[3027]: Connection from UDP: [127.0.0.1]:38978 
 
Nov 22 10:36:25 localhost snmpd[3027]: Received SNMP packet(s) from UDP: [127.0.0.1]:38978

※CentOS5.5 / sysklogd-1.4.1-46.el5 で確認  
※snmpdの上記メッセージをピンポイントで抑止する方法はこちら

仕様

ファシリティの一覧

  • kern
  • user
  • mail
  • daemon
  • auth
  • syslog
  • lpr
  • news
  • uucp
  • cron
  • authpriv
  • ftp
  • local0
  • local1
  • local2
  • local3
  • local4
  • local5
  • local6
  • local7

プライオリティの一覧(重要度順)

  • emerg
  • alert
  • crit
  • err
  • warning
  • notice
  • info
  • debug

以上

snmpd(8) の使用例

snmpd(8)の使い方の例を示す。


概要

SNMPの問い合わせに応答する常駐サービス。

使い方

メッセージ出力レベルを変更する

(0) 背景

snmpdを使用し始めると、ディストリビューションのデフォルト設定によっては、以下メッセージが/var/log/messagesに出続けディスクの無駄遣いになる。このメッセージを出さないようにしたい。

Nov 22 10:36:25 localhost snmpd[3027]: Connection from UDP: [127.0.0.1]:38978
Nov 22 10:36:25 localhost snmpd[3027]: Received SNMP packet(s) from UDP: [127.0.0.1]:38978

(1) /etc/sysconfig/snmpd.optionsを編集

# snmpd command line options
# OPTIONS="-Lsd -Lf /dev/null -p /var/run/snmpd.pid -a"

# snmpd command line options
# OPTIONS="-Lsd -Lf /dev/null -p /var/run/snmpd.pid -a"
OPTIONS="-LS 5 d -Lf /dev/null -p /var/run/snmpd.pid -a"

(2) snmpdを2回再起動

# service snmpd restart
snmpd を停止中:                                            [  OK  ]
snmpd を起動中:                                            [  OK  ]
# service snmpd restart
snmpd を停止中:                                            [  OK  ]
snmpd を起動中:                                            [  OK  ]
#

(3) メッセージを確認

以下の様に1回目の再起動で出ていたReceived TERM or STOP signal...  shutting down...が2回目の再起動で出なくなっていたら成功。

(1回目)
Nov 22 11:10:20 localhost snmpd[3027]: Received TERM or STOP signal...  shutting down...
(2回目)
<メッセージが出ない>

※これでメッセージは抑止できるが、snmpdの起動/停止がログに残らない。Connection from UDP:...は何が目的でINFOレベルで出力しているんだろう?DEBUGレベルじゃないか?  
※実運用としては、Connection from UDP:..出力の理由が分かるまで、メッセージは記録し続け、上位のツールで表示上はフィルタリングすることをお勧め。

以上

ethtool(8) の使用例

ethtool(8)の使い方の例を示す。


概要

NICカード(イーサネットカード)の定義を表示/変更するコマンドツール。 

使い方

定義を表示する 

# ethtool eth0
Settings for eth0:         Supported ports: [ TP ]         Supported link modes:   10baseT/Half 10baseT/Full                                 100baseT/Half 100baseT/Full                                 1000baseT/Half 1000baseT/Full         Supports auto-negotiation: Yes         Advertised link modes:  10baseT/Half 10baseT/Full                                 100baseT/Half 100baseT/Full                                 1000baseT/Half 1000baseT/Full         Advertised auto-negotiation: Yes         Speed: 100Mb/s         Duplex: Full         Port: Twisted Pair         PHYAD: 1         Transceiver: internal         Auto-negotiation: on         Supports Wake-on: g         Wake-on: g         Current message level: 0x000000ff (255)         Link detected: yes
#
  • Speed: 現在のリンクスピード
  • Duplex: 現在の通信モード (Full:全二重、Half:半二重)
  • Auto-negociation: 現在のオートネゴシエーション状態

以上

インターフェイス設定ファイル ifcfg-&lt;device&gt;

インターフェイス設定ファイル、ifcfg-<device>の使い方の例を示す。


概要

ネットワーク設定を行うファイル。 

使い方

NICカードのネゴシエーション定義を行う 

例えば、以下定義を/etc/sysconfig/network-scripts/ifcfg-eth0に追加。 

ETHTOOL_OPTS="speed 100 duplex full autoneg off"

※100Mbps/full-dupex 固定、オートネゴシエーション OFFの例

参考

以上

2010年11月21日

whatis(1)の使用例

概要

whatis データベースから完全な単語を検索するプログラム

使い方

# makewhatis
# whatis mke2fs
mke2fs               (8)  - create an ext2/ext3 filesystem
mke2fs [mkfs]        (8)  - create an ext2/ext3 filesystem
mke2fs.conf [mke2fs] (5)  - Configuration file for mke2fs
以上

vim(1)の使用例

概要

コマンドライン端末用のテキストエディタ。

使い方

行番号を表示
set nu
以上

uname(1)の使用例

使い方

カーネルバージョンを確認する
$ uname -r
2.6.18-53.el5
以上

tr(1)の使用例

概要

文字の変換、削除や、連続する文字の圧縮を行う。

使い方

英小文字を英大文字に変換#1
# cat file.hoo
abcdefghijklmnopqrstuvwxyz
# cat file.hoo | tr 'a-z' 'A-Z'
ABCDEFGHIJKLMNOPQRSTUVWXYZ
#
英小文字を英大文字に変換#2
# cat file.hoo
abcdefghijklmnopqrstuvwxyz
# cat file.hoo | tr [:lower:] [:upper:]
ABCDEFGHIJKLMNOPQRSTUVWXYZ
#

仕様

  • LSB4.0
以上

touch(1)の使用例

概要

ファイルのアクセス時刻と修正時刻を変更するプログラム

使い方

現在の時刻でファイルを新しく作成
# ls -l test.file
ls: test.file: そのようなファイルやディレクトリはありません
# touch test.file
# ls -l test.file
-rw-r--r-- 1 root root 0 10月 11 21:39 test.file

仕様

  • LSB4.0
以上

top(1)の使用例

概要

プロセスの一覧情報を指定項目でソートしてリアルタイム報告するコマンドツール。

使い方

top - 13:15:16 up 24 days, 20:16,  2 users,  load average: 0.00, 0.00, 0.00
Tasks:  75 total,   2 running,  73 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.0% us,  0.1% sy,  0.0% ni, 99.9% id,  0.0% wa,  0.0% hi,  0.0% si
Mem:   8243584k total,  8209184k used,    34400k free,   427600k buffers
Swap:  2097120k total,        0k used,  2097120k free,  7376384k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
12491 root      16   0  4192 2368 1872 R    0  0.0   0:00.01 top
 3391 root      16   0 14352  10m 3712 S    0  0.1   2:33.39 hald
    1 root      16   0  3440 1504 1232 S    0  0.0   0:00.54 init
    2 root      RT   0     0    0    0 S    0  0.0   0:00.26 migration/0
    3 root      34  19     0    0    0 S    0  0.0   0:00.01 ksoftirqd/0
    4 root      RT   0     0    0    0 S    0  0.0   0:00.25 migration/1
    5 root      34  19     0    0    0 S    0  0.0   0:00.00 ksoftirqd/1
    6 root       5 -10     0    0    0 S    0  0.0   0:00.00 events/0
    8 root       5 -10     0    0    0 S    0  0.0   0:00.00 khelper
    9 root      15 -10     0    0    0 S    0  0.0   0:00.00 kacpid
   49 root       5 -10     0    0    0 S    0  0.0   0:00.00 kblockd/0
   50 root       5 -10     0    0    0 S    0  0.0   0:00.00 kblockd/1
   68 root      20   0     0    0    0 S    0  0.0   0:00.00 pdflush
   69 root      15   0     0    0    0 S    0  0.0   0:02.98 pdflush
   71 root      12 -10     0    0    0 S    0  0.0   0:00.00 aio/0
   51 root      15   0     0    0    0 S    0  0.0   0:00.06 khubd
   70 root      15   0     0    0    0 S    0  0.0   0:00.14 kswapd0
   72 root       5 -10     0    0    0 S    0  0.0   0:00.00 aio/1
  215 root      21   0     0    0    0 S    0  0.0   0:00.00 kseriod
  357 root      16   0     0    0    0 S    0  0.0   0:00.00 scsi_eh_0
  359 root      16   0     0    0    0 S    0  0.0   0:00.00 scsi_eh_1
  373 root      21   0     0    0    0 S    0  0.0   0:00.00 scsi_eh_2
  398 root      15   0     0    0    0 S    0  0.0   0:03.46 kjournald
 1772 root       6 -10  3152 1280 1040 S    0  0.0   0:00.01 udevd
 2059 root       6 -10     0    0    0 S    0  0.0   0:00.00 kauditd
 2110 root       7 -10     0    0    0 S    0  0.0   0:00.00 kmirrord
 2139 root      15   0     0    0    0 S    0  0.0   0:00.77 kjournald
 2140 root      15   0     0    0    0 S    0  0.0   0:01.57 kjournald
以上

2010年11月20日

KVM - 仮想マシン生成ウィザードのOSタイプ選択によって仮想マシン定義が変わる

少しハマったのでメモを残す。


前提環境
  • CentOS5.5
  • KVM
内容
前提環境に、Windows XP SP3をゲストとして入れたところ、XPをシャットダウンしても自動でKVM仮想マシンが終了しない。
さらに、OSタイプをGenericを選び、XPをインストールしなおすと、今度は時計がずれる。
仮想マシン生成ウィザードで、acpiの設定や、マシンクロックの設定がOSタイプに合わせ自動で設定されているようだ。
以下に、OSタイプ、OS種別による違いの調査結果を示す。要はXPで電源が切れるようにインストールする際は、vistaを選べばよい。
選択 clock offset acpi apic
OSタイプ<generic>
OS種別<generic>
utc
OSタイプ<windows>
OS種別<vista/2003/2008/XP(64bit)>
localtime
OSタイプ<windows>
OS種別<XP/2000>
localtime - -
以上

2010年11月19日

tac(1)の使用例

概要

ファイルを結合し、逆順に表示するコマンドツール。

使い方

catと比較
# cat file.hoo
a
b
c
d
f
# tac file.hoo
f
d
c
b
a
#
以上

strace(1)の使用例

概要

指定したコマンド等の実行時のシステムコール発行状況をトレースするコマンドツール。

使い方

lsの実行時のシステムコールをトレース採取する
[root@localhost ~]# strace -f -F -o ./trace.txt ls
...
[root@localhost ~]# cat ./trace.txt
...
以上

tee(1)の使用例

概要

標準入力を標準出力とファイルの両方に出力するコマンドツール。

使い方

[root@RHEL51-00 ~]# dmesg | tee dmseg.log
Linux version 2.6.18-53.el5PAE (brewbuilder@hs20-bc2-3.build.redhat.com)
 (gcc version 4.1.2 20070626 (Red Hat 4.1.2-14)) #1 SMP Wed Oct 10 16:48
:18 EDT 2007 BIOS-provided physical RAM map:
...
[root@RHEL51-00 ~]# cat dmseg.log
Linux version 2.6.18-53.el5PAE (brewbuilder@hs20-bc2-3.build.redhat.com)
 (gcc version 4.1.2 20070626 (Red Hat 4.1.2-14)) #1 SMP Wed Oct 10 16:48
:18 EDT 2007 BIOS-provided physical RAM map:

仕様

  • LSB4.0
以上

2010年11月18日

stat(1)の使用例

概要


ファイルもしくはファイルシステムの状態を報告する。

使い方


ファイルの更新履歴等を調べる

$ stat /etc/hosts
  File: `/etc/hosts'
  Size: 44              Blocks: 16         IO Block: 16384  通常ファイル
Device: 802h/2050d      Inode: 1070506     Links: 2
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2009-04-16 14:38:45.000000000 +0900
Modify: 2007-07-11 17:14:04.000000000 +0900
Change: 2007-07-11 17:14:04.000000000 +0900

以上

Windowsフォルダのバックアップ・同期(コマンド)

Windows標準機能、もしくはMicrosoft提供機能で、フォルダをバックアップもしくは同期する方法(コマンド)を紹介する。


確認環境

-Windows XP Pro SP3

XCOPYコマンド(標準)を使う例

写真等の絶対なくなってほしくないデータのバックアップにはこちらがお勧め。

C:\Documents and Settings\owner>dir test
ドライブ C のボリューム ラベルがありません。
ボリューム シリアル番号は xxxx-xxxx です

C:\Documents and Settings\owner\test のディレクトリ

2010/11/17  16:48    <dir>     .
2010/11/17  16:48    <dir>     ..
2010/11/17  16:48                16 helloworld.txt
               1 個のファイル                  16 バイト
               2 個のディレクトリ   2,823,933,952 バイトの空き領域

C:\Documents and Settings\owner>mkdir test2

C:\Documents and Settings\owner>xcopy test test2 /D /S /E /H /C /Y /R
test\helloworld.txt
1 個のファイルをコピーしました

C:\Documents and Settings\owner>dir test2
ドライブ C のボリューム ラベルがありません。
ボリューム シリアル番号は XXXX-XXXX です

C:\Documents and Settings\owner\test2 のディレクトリ

2010/11/17  16:53    <dir>          .
2010/11/17  16:53    <dir>          .
2010/11/17  16:48                16 helloworld.txt
               1 個のファイル                  16 バイト
               2 個のディレクトリ   2,823,946,240 バイトの空き領域

C:\Documents and Settings\owner>

【書式】 XCOPY <FROM> <TO> /D /S /E /H /C /Y /R
<FROM> コピー元フォルダ
<TO> コピー先フォルダ ※コピー先フォルダは事前に作成
/D は日付が新しくなっているファイルもしくは新規ファイルをコピー対象にする
/S /E でサブフォルダを対象にする
/H は隠しファイル、システム・ファイルを対象にする
/C はエラーが発生してもコピーを続ける
/Y コピー先に同一名ファイルがあっても上書きする
/R コピー先が読み取り専用であっても上書きする

ROBOCOPYコマンド(VISTA以降標準)を使う例

Webコンテンツの配信など、2つのフォルダ内容を同期したい場合にお勧め。

※XPは「Windows Server 2003 Resource Kit Tools」を事前に導入要。

C:\Documents and Settings\owner>robocopy test test2 /mir

-------------------------------------------------------------------------------
   ROBOCOPY     ::     Robust File Copy for Windows     ::     Version XP010
-------------------------------------------------------------------------------

  Started : Wed Nov 17 17:05:52 2010

   Source : C:\Documents and Settings\owner\test\
     Dest : C:\Documents and Settings\owner\test2\

    Files : *.*

  Options : *.* /S /E /COPY:DAT /PURGE /MIR /R:1000000 /W:30

------------------------------------------------------------------------------

          New Dir          1    C:\Documents and Settings\owner\test\
100%        New File                  16        helloworld.txt

------------------------------------------------------------------------------

                Total    Copied   Skipped  Mismatch    FAILED    Extras
     Dirs :         1         1         0         0         0         0
    Files :         1         1         0         0         0         0
    Bytes :        16        16         0         0         0         0
    Times :   0:00:00   0:00:00                       0:00:00   0:00:00

    Ended : Wed Nov 17 17:05:52 2010

C:\Documents and Settings\owner>

【書式】 ROBOCOPY <FROM> <TO> /MIR
<FROM> コピー元フォルダ
<TO> コピー先フォルダ
/MIR はミラーモード(一方向)指定。※このオプションをとれば先のXCOPYと同等になる

以上

2010年11月17日

startx(1)の使用例

概要

Xセッションを開始する。

使い方

# startx
以上

ssh(1)の使用例

概要

セキュア端末。※他にも使い方はあるが、とりあえず。

使い方

リモートホストへセキュアにCUI端末接続
owner@owner-desktop:~$ ssh guest@XX.XX.XXX.XXX
The authenticity of host 'XX.XX.XXX.XXX (XX.XX.XXX.XXX)' can't be established.
RSA key fingerprint is 68:f9:8c:b5:da:8c:70:5b:8e:23:ce:75:59:18:eb:28.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'XX.XX.XXX.XXX' (RSA) to the list of known hosts.
guest@XX.XX.XXX.XXX's password: 
Last login: Thu Aug 27 18:20:42 2009 from hoo.foo.jp
[guest@rhel51 ~]$
以上

smbstatus(1)の使用例

概要

Sambaサーバに接続されているクライアントの状態や、開かれているファイルを表示する。

使い方

Sambaサーバを何もセットアップしていない場合
[root@localhost ~]# smbstatus
sessionid.tdb not initialised
/var/cache/samba/connections.tdb not initialised
This is normal if an SMB client has never connected to your server.
/var/cache/samba/locking.tdb not initialised
This is normal if an SMB client has never connected to your server.
以上

2010年11月14日

smbclient(1)の使用例

概要

ftpライクなsmb/cifsクライアントでコマンドツール。

使い方

とにかく接続してみる
[root@localhost ~]# smbclient //***.***.***.***/Thunderbird -U owner
Password:
Domain=[WORKGROUP] OS=[Windows 5.1] Server=[Windows 2000 LAN Manager]
smb: \> ls
  .                                   D        0  Fri Aug  7 16:19:55 2009
  ..                                  D        0  Fri Aug  7 16:19:55 2009
  Profiles                            D        0  Mon Jul  6 15:10:23 2009
  Profiles_                           D        0  Mon Jul  6 15:10:23 2009

                38154 blocks of size 524288. 15890 blocks available
smb: \> quit
[root@localhost ~]#
以上

showrgb(1)の使用例

概要

Xで使用可能な色とRGB値を表示するコマンドツール。

使い方

[guest@localhost ~]$ showrgb
255 250 250             snow
248 248 255             ghost white
248 248 255             GhostWhite
245 245 245             white smoke
245 245 245             WhiteSmoke
220 220 220             gainsboro
255 250 240             floral white
255 250 240             FloralWhite
253 245 230             old lace
...
以上

sar(1)の使用例

概要

OSの各種統計情報を表示するコマンドツール。

使い方

sar -B ~ページングの統計状況~
00時00分01秒  pgpgin/s pgpgout/s   fault/s  majflt/s
00時10分01秒      0.00      1.02      2.79      0.00
00時20分01秒      0.00      0.71      1.66      0.00
:
11時10分01秒      0.00      0.97      2.79      0.00
11時20分01秒      0.00      0.71      1.66      0.00
平均値:       0.00      0.95      4.98      0.00
  • pgpgin/s - 1 秒あたりにディスクからシステムがページインした数(KB)
  • pgpgout/s - 1 秒あたりにディスクへシステムがページアウトした数(KB)
  • fault/s - 1 秒あたりにシステムがページフォルトした回数。(メジャーフォルトとマイナーフォルトの合計)。
  • majflt/s - 1 秒あたりにシステムがメジャーフォルトした回数。

sar -r ~メモリとスワップ容量の使用状況~
05時30分01秒 kbmemfree kbmemused  %memused kbbuffers  kbcached kbswpfree kbswpused  %swpused  kbswpcad
05時40分01秒   4782912   3460672     41.98    274976   2862304   2097120         0      0.00         0
05時50分01秒   4782464   3461120     41.99    274976   2862304   2097120         0      0.00         0
:
10時00分01秒   4776992   3466592     42.05    274976   2862304   2097120         0      0.00         0
10時10分01秒   4782240   3461344     41.99    274976   2862304   2097120         0      0.00         0
平均値:    4777991   3465593     42.04    274933   2862347   2097120         0      0.00         0
  • kbmemfree -使用できる空きメモリ容量(KB)
  • kbmemused -使用中のメモリ容量(KB) ※カーネルが使用しているメモリ量は含まない
  • %memused -メモリの使用率。
  • kbbuffers -カーネルによってバッファとして使用中のメモリ容量(KB)
  • kbcached -カーネルがキャッシュデータとして使用中のメモリ容量(KB)
  • kbswpfree -使用できるスワップ空き容量(KB)
  • kbswpused -使用中のスワップ容量(KB)
  • %swpused -スワップ容量の使用率
  • kbswpcad -キャッシュされたswap容量(KB) ※スワップアウトされたが、再度読み込まれて、まだ使われていない容量。IO削減の仕組み。
以上

ps(1)の使用例

概要

プロセスの状態を報告するコマンドツール。

使い方

$ ps
  PID TTY          TIME CMD
12251 pts/1    00:00:00 bash
12366 pts/1    00:00:00 ps

仕様

  • LSB4.0
以上

pmap(1)の使用例

概要

プロセスのメモリマップを報告するコマンドツール。

使い方

$ pmap 12251
12251:   -bash
0000000000000000     16K r----    [ anon ]
2000000000000000    192K r-x--  /lib/ld-2.3.4.so
200000000003c000     32K rw---  /lib/ld-2.3.4.so
2000000000054000     32K r-x--  /lib/libtermcap.so.2.0.8
200000000005c000     48K -----  /lib/libtermcap.so.2.0.8
2000000000068000     16K rw---  /lib/libtermcap.so.2.0.8
200000000006c000     16K r-x--  /lib/libdl-2.3.4.so
2000000000070000     48K -----  /lib/libdl-2.3.4.so
200000000007c000     32K rw---  /lib/libdl-2.3.4.so
2000000000084000   2384K r-x--  /lib/tls/libc-2.3.4.so
20000000002d8000     48K -----  /lib/tls/libc-2.3.4.so
20000000002e4000     32K rw---  /lib/tls/libc-2.3.4.so
20000000002ec000    112K rw---    [ anon ]
2000000000308000     96K r-x--  /lib/libnss_files-2.3.4.so
2000000000320000     48K -----  /lib/libnss_files-2.3.4.so
200000000032c000     16K rw---  /lib/libnss_files-2.3.4.so
2000000000330000     16K rw---    [ anon ]
2000000000334000  50272K r----  /usr/lib/locale/locale-archive
2000000003500000     32K r--s-  /usr/lib/gconv/gconv-modules.cache
2000000003508000    128K rw---    [ anon ]
4000000000000000   1408K r-x--  /bin/bash
600000000000c000     80K rw---  /bin/bash
6000000000020000    304K rw---    [ anon ]
60000fff7fffc000     16K rw---    [ anon ]
60000fffffff8000     16K rwx--    [ stack ]
a000000000000000    128K -----    [ anon ]
 total            55568K
以上

pkill(1)の使用例

概要

プロセス名を指定し、シグナルを送るコマンドツール。

使い方

# ps
  PID TTY          TIME CMD
 3119 pts/0    00:00:00 bash
 3174 pts/0    00:00:00 loop
 4668 pts/0    00:00:00 ps
# pkill -TERM loop
[1]+  終了しました      nohup ./loop
以上

2010年11月13日

od(1)の使用例

概要

ファイルを、8進数、10進数、16進数で出力

使い方

16進数で出力
# od -txC file.hoo
0000000 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f 70
0000020 71 72 73 74 75 76 77 78 79 7a 0a
0000033
# cat file.hoo
abcdefghijklmnopqrstuvwxyz

仕様

  • LSB4.0
以上

pgrep(1)の使用例

概要

名前指定でのプロセスの一覧報告するコマンドツール。

使い方

$ pgrep bash
12195
12251
以上

patch(1) の使用例

概要

ソースコードなどにパッチ(修正)を適用するコマンドツール。

使い方

パッチの作成→適用→取戻の一連の例
(一連の流れを行う前の状況確認)
guest@debian5:~$ ls
v1.0.0  v1.0.1
guest@debian5:~$ cat v1.0.0/Readme
Good Morning
Readme v1.0.0
guest@debian5:~$ cat v1.0.1/Readme
Good Morning, every one!
Readme v1.0.1

(パッチを作成)
guest@debian5:~$ diff -Nru v1.0.0 v1.0.1 > patch.diff
guest@debian5:~$ cat patch.diff
diff -Nru v1.0.0/Readme v1.0.1/Readme
--- v1.0.0/Readme       2009-08-11 20:41:00.000000000 +0900
+++ v1.0.1/Readme       2009-08-11 20:41:28.000000000 +0900
@@ -1,2 +1,2 @@
-Good Morning
-Readme v1.0.0
+Good Morning, every one!
+Readme v1.0.1

(パッチをv1.0.0ディレクトリに適用)
guest@debian5:~$ patch -d v1.0.0 < patch.diff
patching file Readme
guest@debian5:~$ cat v1.0.0/Readme
Good Morning, every one!
Readme v1.0.1
guest@debian5:~$ cat v1.0.1/Readme
Good Morning, every one!
Readme v1.0.1

(v1.0.0ディレクトリに当てたパッチを外す)
guest@debian5:~$ patch -R -d v1.0.0 < patch.diff
patching file Readme
guest@debian5:~$ cat v1.0.0/Readme
Good Morning
Readme v1.0.0
guest@debian5:~$ cat v1.0.1/Readme
Good Morning, every one!
Readme v1.0.1
guest@debian5:~$

仕様

  • LSB4.0
以上

2010年11月11日

メモ - Red Hat Enterprise Linux 6のリリース

米国時間2010年11月10日、Red Hat Enterprise Linux 6がリリース。

リリース文
http://www.redhat.com/about/news/prarchive/2010/new-standard.html
新機能説明
http://www.redhat.com/rhel/server/details/
マニュアル類(11/12追記)
http://docs.redhat.com/docs/ja-JP/Red_Hat_Enterprise_Linux/index.html
以上

参考文献 - とほほのWeb入門

とほほのWeb入門


分類
Webサイト
URL
http://www.tohoho-web.com/www.htm

以上

ntpdate(1) の使用例

概要

NTPサーバの時刻へ強制設定するコマンドツール。

使い方

時刻設定する(設定前にntpdの停止を確認)
[root@localhost ~]# service --status-all | grep ntpd
rndc: connect failed: 127.0.0.1#953: connection refused
ntpd は停止しています
[root@localhost ~]# ntpdate foo.hoo.co.jp
11 Aug 10:36:27 ntpdate[3429]: adjust time server ***.***.***.*** offset -0.000301 sec
[root@localhost ~]#
以上

nl(1) の使用例

概要

入力に行番号を付けて出力するコマンドツール。

使い方

[root@RHEL51-00 ~]# nl file.hoo
     1  a
     2  b
     3  c
     4  d
     5  f
[root@RHEL51-00 ~]# cat file.hoo
a
b
c
d
f
[root@RHEL51-00 ~]#
以上

2010年11月10日

mkdir(1) の使用例

概要

ディレクトリを作成するコマンドツール。

使い方

親ディレクトリも含めて一気にディレクトリ作成する使い方の例
# ls -R aaa
ls: aaa: そのようなファイルやディレクトリはありません
# mkdir -p aaa/bbb/ccc
# ls -R aaa
aaa:
bbb

aaa/bbb:
ccc

aaa/bbb/ccc:
#

仕様

  • LSB4.0
以上

mknod(1)の使用例

概要

ブロックもしくはキャラクタ特殊デバイスを作成するコマンドツール。

使い方

デバイスを作成する例
[root@localhost ~]# ls -l /dev/fd0
brw-rw---- 1 root floppy 2, 0 10月 26 09:11 /dev/fd0
[root@localhost ~]# mknod /dev/test b 2 0
[root@localhost ~]# ls -l /dev/test
brw-r--r-- 1 root root 2, 0 10月 26 09:31 /dev/test
[root@localhost ~]#

仕様

  • LSB4.0
以上

mv(1) の使用例

概要

ファイルを移動するコマンドラインツール。

使い方

ファイルを別のファイル名に移動(ファイル名を変更)
[root@RHEL51-00 ~]# ls -l hoo*
-rw-r--r-- 1 root root 0 10月 12 10:46 hoo
[root@RHEL51-00 ~]# mv hoo hooo
[root@RHEL51-00 ~]# ls -l hoo*
-rw-r--r-- 1 root root 0 10月 12 10:46 hooo
[root@RHEL51-00 ~]#

仕様

  • LSB4.0
以上

2010年11月9日

参考文献 - JVN iPedia 脆弱性対策情報データベース

JNVがまとめている脆弱性情報データベース。

名称
JVN iPedia 脆弱性対策情報データベース
URL
http://jvndb.jvn.jp/
以上

2010年11月1日

PHPで関数の返り値に配列を利用

PHPで関数の返り値に配列を利用する例を示す。

テスト1

単純な配列を扱ってみる。
---func.php---
<?php
$array=getArray("apple", "orange", "banana", "mango");
echo "<h1>test1</h1>";
echo "<p>".$array[0]."</p>";
echo "<p>".$array[1]."</p>";
echo "<p>".$array[2]."</p>";
echo "<p>".$array[3]."</p>";
function getArray($a, $b, $c, $d) {
  return array($a, $b, $c, $d);
}
?>

テスト2

同じことを連想配列でやってみる。
---func2.php---
<?php
$array=getArray("apple", "orange", "banana", "mango");
echo "<h1>test2</h1>";
echo "<p>".$array['first']."</p>";
echo "<p>".$array['second']."</p>";
echo "<p>".$array['third']."</p>";
echo "<p>".$array['fourth']."</p>";
function getArray($a, $b, $c, $d) {
  return array("first" => $a, "second" => $b, "third" => $c, "fourth" => $d);
}
?>
以上

2010年10月29日

loadkeys(1) の使用例

概要

キーボードマップを設定するコマンドツール。

使い方

日本語106キーボード設定を読み込む
$ loadkeys jp106
以上

join(1) の使用例

使い方

以下の様な使い方ができるらしい。あまり詳しく調べていない。
[root@RHEL51-00 ~]# join file2 file1
TOKYO 20 10
[root@RHEL51-00 ~]# cat file1
TOKYO   10
OSAKA   10
NAGOYA  10
[root@RHEL51-00 ~]# cat file2
OSAKA   30
TOKYO   20
NAGOYA  40
[root@RHEL51-00 ~]#

仕様

  • LSB4.0
以上

2010年10月27日

iostat(1) の使用例

概要

ディスクアクセスの統計情報を表示するコマンドツール

使い方

iostat -x - ディスクアクセス状況を詳しく表示
[root@localhost ~]# iostat -x
Linux 2.6.18-128.el5PAE (localhost.localdomain)         2009年09月07日
avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           4.81    0.11    9.63   15.57    0.00   69.88
Device:         rrqm/s   wrqm/s   r/s   w/s   rsec/s   wsec/s avgrq-sz avgqu-sz   await  svctm  %util
sda              13.38    25.27 24.07  5.42  1001.84   245.56    42.29     0.84   28.57   7.59  22.39
sda1              1.45     0.00  0.35  0.01    16.85     0.03    46.29     0.00    5.60   3.96   0.14
sda2              7.01    11.28 22.70  5.02   954.71   130.42    39.15     0.80   28.84   8.01  22.20
sda3              4.50    14.00  0.83  0.39    28.62   115.10   117.51     0.04   33.26  21.06   2.58
sda4              0.00     0.00  0.01  0.00     0.01     0.00     2.00     0.00    5.50   5.50   0.00
sda5              0.37     0.00  0.15  0.00     1.05     0.00     7.09     0.00    1.59   1.58   0.02
sdb               0.03     0.00  0.11  0.00     1.11     0.00     9.83     0.00    0.30   0.30   0.00
[root@localhost ~]#
  • Device:デバイス名もしくはパーティション名
  • rrqm/s:単位秒辺りの読み込み要求の数
  • wrqm/s:単位秒辺りの書き込み要求の数
  • r/s:単位秒辺りの読み込み実行数
  • w/s:単位秒辺りの書き込み実行数
  • rsec/s:単位秒辺りに読み込んだセクターの数
  • wsec/s:単位秒辺りに書き込んだセクターの数
  • avgrq-sz:要求毎の平均セクタ数
  • avgqu-sz:要求の平均待ち数
  • await:IOリクエスト毎の平均待ち時間(msec)
  • svctm:IOリクエスト毎の平均サービス時間(msec) ※走行したCPU時間の意味?
  • %util:?
以上

grep(1) の使用例

概要

パターンにマッチした行を標準出力するプログラム。

使い方

大文字/小文字の区別なくパターンマッチさせる
[root@RHEL51-00 ~]# cat file.txt
linux go go!
Linux go go!
LINUX go go!
[root@RHEL51-00 ~]# grep -i linux file.txt
linux go go!
Linux go go!
LINUX go go!
(因みに...)
[root@RHEL51-00 ~]# grep linux file.txt
linux go go!
[root@RHEL51-00 ~]# grep LINUX file.txt
LINUX go go!
[root@RHEL51-00 ~]#

仕様

  • LSB4.0
以上

grub-install(8) の使用例

MBRにGRUB一次ローダをインストールし、その1次ローダが1.5次ローダや2次ローダを読み込むよう、一連のGRUB環境を整えるシェルスクリプト。内部でgrub(8)コマンドを呼び出している。

使い方

GRUBをMBRにインストールする

[root@localhost ~]# grub-install /dev/sda
Installation finished. No error reported.
This is the contents of the device map /boot/grub/device.map.
Check if this is correct or not. If any of the lines is incorrect,
fix it and re-run the script `grub-install'.

# this device map was generated by anaconda
(hd0)     /dev/sda
[root@localhost ~]#

関連項目


  • grub(8)
  • grub.conf(5)

dpkg(1) の使用例

概要

インストールパッケージの管理(表示、追加、変更、削除など)を行うコマンドツール。

使い方

インストールされているパッケージの一覧表示
$ dpkg -l
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Installed/Config-files/Unpacked/Failed-config/Half-installed
|/ Err?=(none)/Hold/Reinst-required/X=both-problems (Status,Err: uppercase=bad)
||/ Name             Version          Description
+++-================-================-================================================
ii  acpi             0.09-1           displays information on ACPI devices
ii  acpi-support     0.90-4           scripts for handling many ACPI events
...
$
指定ファイルがどのパッケージからインストールされたか表示
$ dpkg -S /bin/ls
coreutils: /bin/ls
$
パッケージの詳細を表示
$ dpkg -s coreutils
Package: coreutils
Essential: yes
Status: install ok installed
Priority: required
Section: utils
Installed-Size: 10616
Maintainer: Michael Stone <mstone@debian.org>
Architecture: i386
Version: 5.97-5.3
Replaces: textutils, shellutils, fileutils, stat, debianutils (<= 2.3.1), dpkg (<< 1.13.2)
Provides: textutils, shellutils, fileutils
Pre-Depends: libacl1 (>= 2.2.11-1), libc6 (>= 2.3.6-6), libselinux1 (>= 1.32)
Conflicts: stat
Description: The GNU core utilities
 This package contains the essential basic system utilities.
 .
 Specifically, this package includes:
 basename cat chgrp chmod chown chroot cksum comm cp csplit cut date dd df dir
 dircolors dirname du echo env expand expr factor false fmt fold groups head
 hostid id install join link ln logname ls md5sum mkdir mkfifo mknod mv nice nl
 nohup od paste pathchk pinky pr printenv printf ptx pwd readlink rm rmdir
 sha1sum seq shred sleep sort split stat stty sum sync tac tail tee test touch
 tr true tsort tty uname unexpand uniq unlink users vdir wc who whoami yes
$
パッケージに含まれるファイルを一覧表示
$ dpkg -L coreutils
/.
/bin
/bin/mkdir
/bin/mv
/bin/true
/bin/mknod
/bin/sleep
...
$

関連項目

  • apt-get
以上

df(1) の使用例

概要

ファイルシステムのディスク容量の使用状況を表示するプログラム。

使い方

iノード使用状況を表示
[root@RHEL51-00 ~]# df -i
Filesystem            Iノード  I使用   I残り I使用% マウント位置
/dev/sda2            2621440  124188 2497252    5% /
/dev/sda1              66264      38   66226    1% /boot
tmpfs                  31956       1   31955    1% /dev/shm
/dev/sdb1            1703936      90 1703846    1% /home
[root@RHEL51-00 ~]#

仕様

  • LSB4.0
以上

head(1) の使用例

概要

ファイルの先頭を表示するツール

使い方

先頭5行を表示
[root@RHEL51-00 ~]# head -15 /etc/inittab
#
# inittab       This file describes how the INIT process should set up
#               the system in a certain run-level.
#
# Author:       Miquel van Smoorenburg, <miquels@drinkel.nl.mugnet.org>
[root@RHEL51-00 ~]# head -n 5 /etc/inittab
#
# inittab       This file describes how the INIT process should set up
#               the system in a certain run-level.
#
# Author:       Miquel van Smoorenburg, <miquels@drinkel.nl.mugnet.org>
[root@RHEL51-00 ~]#

仕様

  • LSB4.0
以上

fuser(1) の使用例

概要

ファイルを開いているプロセスに関する情報を表示するコマンドツール。

使い方

/dev/nullをオープンしているプロセスを特定
[root@localhost ~]# fuser /dev/null
/dev/null:             568  2364  2450  2475  2508  2588  2599  2603  2665  2684  2704  27
24  2738  2761  2781  2789  2812  2845  2856  2866  2896  2897  2908  2909  2918  2922  29
31  3002  3004  3006  3017  3112  3114  3138  3142
[root@localhost ~]#

仕様

  • LSB4.0

関連項目

  • lsof(8)
以上

2010年10月26日

at(1) の使用例

概要

後で実行するコマンドをキューに入れたり、そのキューの状況を参照したりするコマンドツール。特定時刻に実行したいコマンドを登録するのに良く使う。

使い方

3日後にコマンドを実行する
$ echo <コマンド> | at now + 3 days

他、minutes、hours、weeksが使用できる。結果はメールで確認する。

$ mailx
...
>N 1 xxxx Tue Jul 28 20:00 17/552 "Output from your job  1"
コマンドのキューイング状況を確認する
$ atq (もしくは、at -l)
2      2009-07-28 24:00 a guest

標準仕様

  • LSB4.0
以上

cpio(1) の使用例

使い方

RPMファイルをその場に展開する
$ rpm2cpio hoge.rpm | cpio -i

仕様

  • LSB4.0

関連項目

  • rpm2cpio
以上

cut(1) の使用例

概要

ファイルから指定のカラムを抜き出すコマンドツール。

使い方

/etc/groupファイルからグループ名を抜き出す
[root@RHEL51-00 ~]# cut -f1 -d: /etc/group
root
bin
daemon
sys
adm
tty
disk
lp
...

仕様

  • LSB4.0
以上

date(1) の使用例

概要

システムの日付と時刻を表示・設定する。

使い方

現在のシステム日付・時刻を表示する
[root@localhost ~]# date
2009年  8月 11日 火曜日 10:26:07 JST
システム日付・時刻を強制設定する(NTP運用をしている場合はntpdateで設定すべき)
[root@localhost ~]# date 081110252009.00
2009年  8月 11日 火曜日 10:25:00 JST
[root@localhost ~]#

※ 書式は、MMDDhhmmYYYY.ss。YYYY年MM月DD日 hh時mm分ss秒

仕様

  • LSB4.0

関連項目

  • ntpdate
以上

apropos(1) の使用例

概要

whatisデータベースより文字列を検索するプログラム

使い方

# apropos mke2fs
mke2fs               (8)  - create an ext2/ext3 filesystem
mke2fs [mkfs]        (8)  - create an ext2/ext3 filesystem
mke2fs.conf [mke2fs] (5)  - Configuration file for mke2fs

関連項目

  • makewhatis
  • whatis
  • whereis
  • which
以上

RHEL/CentOSカーネル版数一覧

RHEL/CentOSのバージョンとカーネル版数の関係を表にまとめて記す。
RHEL6系
リリース カーネルバージョン ソースコード(RHEL)
6.0
2.6.32-71.el6 [srpm]


RHEL/CentOS5系
リリース カーネルバージョン ソースコード(RHEL)
5.6
2.6.18-238.el5 [srpm]
5.5 2.6.18-194.el5 [srpm]
5.4 2.6.18-164.el5 [srpm]
5.3 2.6.18-128.el5 [srpm]
5.2 2.6.18-92.el5 [srpm]
5.1 2.6.18-53.el5 [srpm]
5.0 2.6.18-8.el5 [srpm]
RHEL/CentOS4系
4.7 2.6.9-78.0.1.EL
4.6 2.6.9-67.EL
4.5 2.6.9-55.EL
4.4 2.6.9-42.EL
4.3 2.6.9-34.EL
RHEL/CentOS3系
3.9 2.4.21-50.EL
3.8 2.4.21-47.EL
3.7 2.4.21-40.EL
3.6 2.4.21-37.EL
3.5 2.4.21-32.EL
3.3 2.4.21-20.EL
3.2 2.4.21-15.EL
3.0 2.4.21-4.EL
RHEL/CentOS2系
2.7 2.4.9-e62
2.5 2.4.9-e49
2.2 2.4.9-e27
以上

2010年10月22日

標準出力と標準エラー出力を同じファイルにリダイレクト

標準出力と標準エラー出力を同じファイルにリダイレクトする方法を記す。
コマンドプロンプトでもbashでも同じ。

書式

[コマンド] > [ファイル名] 2>&1

実施例

C:\> ls -j > test 2>&1
C:\> more test
'ls' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。

以上

pukiwikiのメニューバーをリネーム

pukiwikiのメニューバーをリネームする方法を記す。


デフォルトの"MenuBat"という名前を、":MenuBar"に変更して、一覧に出てこないようにしたく、調べた際の結果。

確認環境

  • pukiwiki 1.4.7

手順例

1.pukiwiki.ini.phpの135行目あたりを以下のように編集

$menubar = 'MenuBar' → ':MenuBar'

2."MenuBar"ページを":MenuBar"へリネーム

以上

pukiwikiをCentOS5.5に導入する

pukiwikiをCentOS5.5に導入した際の手順例を記す。

確認環境
  • CentOS5.5
  • Pukiwiki 1.4.7
内容
Pukiwikiを/var/wwwに展開する ※例は、pukiwikiのアーカイブがownerユーザのデスクトップ上にある場合
[root@localhost conf.d]# cd /var/www
[root@localhost conf.d]# tar xvf /home/owner/Desktop/pukiwiki-1.4.7_notb_utf8.ta
r.gz 
...
[root@localhost conf.d]# mv pukiwiki-1.4.7_notb_utf8/ pukiwiki
pukiwiki用の定義を作成
[root@localhost conf.d]# cd /etc/httpd/conf.d
[root@localhost conf.d]# cp manual.conf pukiwiki.conf
[root@localhost conf.d]# vi pukiwiki.conf 
(以下のように編集)manual -> pukiwiki
#
# This configuration file allows the manual to be accessed at
# http://localhost/pukiwiki/
#
AliasMatch ^/pukiwiki(?:/(?:de|en|fr|ja|ko|ru))?(/.*)?$ "/var/www/pukiwiki$1"
<Directory "/var/www/pukiwiki">
    Options Indexes
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory> 
httpdサービスの再起動
[root@localhost conf.d]# service httpd stop
httpd を停止中:                                            [  OK  ]
[root@localhost conf.d]# service httpd start
httpd を起動中:                                            [  OK  ]
[root@localhost conf.d]#
確認
[root@localhost conf.d]# wget http://localhost/pukiwiki/
--2010-04-02 14:00:12--  http://localhost/pukiwiki/
localhost をDNSに問いあわせています... 127.0.0.1
localhost|127.0.0.1|:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 特定できません [text/html]
`index.html' に保存中
    [ <=>                                   ] 11,235      --.-K/s 時間 0.004s  
2010-04-02 14:00:12 (2.55 MB/s) - `index.html' へ保存終了 [11235]
[root@localhost conf.d]# cat index.html
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja">
<head>
<meta http-equiv="content-type" content="application/xhtml+xml; charset=UTF-8" />
<meta http-equiv="content-style-type" content="text/css" />
<title>FrontPage - PukiWiki</title>
...
「FrontPage - PukiWiki」が見えれば成功のはず。後は、Pukiwiki固有の設定(ここでは割愛)をする。
以上

pukiwikiのWikiNameを無効にする

pukiwikiのWikiNameを無効にする手順例を記す。


本家にも書いてあるが、備忘録として自ブログに記す。

手順例

1. "pukiwiki.ini.php"を開く

2. 175行目辺りを以下の様に編集

$nowikiname = 0; → = 1;

確認Version

  • 1.4.7

以上

XAMPP1.7.0Windows版のインストール手順例

XAMPP1.7.0Windows版のインストール手順例を記す。


       
  1. "xampp-win32-1.7.0-installer.exe"をクリック ※セキュリティ警告のポップアップが出た場合は、[実行(R)]をクリック
  2.    
  3. "Japanese"を選択
  4.    
  5. [次へ(N)>]をクリック
  6.    
  7. "c:\xampp"を確認し、[次へ(N)>]をクリック
  8.    
  9. "Apacheをサービスとしてインストール"を追加選択し、[インストール]をクリック
  10.    
  11. [完了(E)]をクリック ※Windowsセキュリティの重要な警告が出た場合は、[ブロックを解除する(U)]をクリック
  12.    
  13. [はい]をクリック
  14.    
  15. [はい]をクリック
 

確認OS

 
       
  • Windows XP SP3
  •    
  • Windows Vista SP1 ※インストール最初に警告が出るが上記手順であれば問題ない

2010年10月21日

PHPでファイルタイムスタンプを表示する。

PHPでファイルタイムスタンプを表示する方法を示す。

確認環境
  • Windows XP
  • PHP5.3.1 (XAMPP for Windows 1.7.3に同梱されていたもの)
例1.自ファイルのタイムスタンプを表示する
以下内容でファイル"timestamp01.php"を作成
<?php      
    echo date("Y/m/d H:i",getlastmod());       
?>
コマンドラインからPHPを実行 ※事前にPHPコマンドにパスを通しておくこと。
C:\> php timestamp01.php     
2010/10/20 08:58      
C:\> 
例2.他ファイルのタイムスタンプを表示する
以下内容でファイル"timestamp02.php"を作成
<?php     
    echo date("Y/m/d H:i",filemtime("C:\WINDOWS\system32\calc.exe"));      
?>
コマンドラインからPHPを実行 ※事前にPHPコマンドにパスを通しておくこと。
C:\> php timestamp02.php     
2001/08/28 21:00      
C:\> 
参考

環境変数TODAYに今日の日付を代入

環境変数TODAYに今日の日付を代入する方法。

今更なネタだが。
for /f "tokens=1-4 delims=/.- " %%A in ('date /t') do (
    set YYYY=%%A&set MM=%%B&set DD=%%C)
set TODAY=%YYYY%%MM%%DD%
以上

環境変数NOWに現在時刻を代入

環境変数NOWに現在時刻を代入する方法。

以下のバッチ処理で可能。
for /f "tokens=1-3 delims=:.- " %%A in ('time /t') do (
 set HH=%%A&set MM=%%B)
set NOW=%HH%%MM%
以上

2010年10月19日

カーネル再構築

Debianのカーネル再構築した際の手順例を示す。


必要パッケージの導入(root作業)

 
debian5:~# aptitude install fakeroot kernel-package linux-source-2.6 libncurses5-dev zlib1g-dev
...

ソースの展開

guest@debian5:~$ tar xjvf /usr/src/linux-source-2.6.26.tar.bz2
...

コンフィグの実施

guest@debian5:~$ cd linux-source-2.6.26
guest@debian5:~/linux-source-2.6.26$ cp /boot/config-2.6.26-2-686 .config
guest@debian5:~/linux-source-2.6.26$ make oldconfig
guest@debian5:~/linux-source-2.6.26$ make menuconfig
...

debuginfoを有効にする場合 → make menuconfigから、[Kernel hacking --->]-[Compile the kernel with debug info]をチェック。

コンパイルの実施(通常)

guest@debian5:~/linux-source-2.6.26$ make-kpkg clean
guest@debian5:~/linux-source-2.6.26$ fakeroot make-kpkg --initrd kernel_image
...

コンパイルの実施(KDBを有効にする場合)

guest@debian5:~/linux-source-2.6.26$ make-kpkg clean
guest@debian5:~/linux-source-2.6.26$ fakeroot make-kpkg --initrd --added-patches kdb kernel_image
...
Built-in Kernel Debugger support (KDB) [N/y/?] (NEW) y
KDB modules (KDB_MODULES) [N/m/y/?] (NEW) y
KDB off by default (KDB_OFF) [N/y/?] (NEW) 
KDB continues after catastrophic errors (KDB_CONTINUE_CATASTROPHIC) [0] (NEW) 
Support for USB Keyboard in KDB (OHCI and/or EHCI only) (KDB_USB) [N/y/?] (NEW) 
...

2010年10月17日

Linuxのcore dumpの中身についてその2

"DEBUG HACKS"を読んでいて(P.61-62辺り)、pmapで見た内容がcoreに出力されてんじゃないの?と気がついたので確かめてみた。

 

※知ってる人はとっくに知ってるんだろうけど。


 

調査ターゲットを探す

 
# ps
  PID TTY          TIME CMD
3578 pts/0    00:00:00 su
3579 pts/0    00:00:00 bash ←こいつをターゲットにしてみよう
3671 pts/0    00:00:00 ps

ターゲット(pid=3579)のpmapを確認

# pmap 3579
3579:   -bash
0019e000     36K r-x--  /lib/libnss_files-2.5.so
001a7000      4K r----  /lib/libnss_files-2.5.so
001a8000      4K rw---  /lib/libnss_files-2.5.so
008db000    100K r-x--  /lib/ld-2.5.so
008f4000      4K r----  /lib/ld-2.5.so
008f5000      4K rw---  /lib/ld-2.5.so
008f8000   1256K r-x--  /lib/libc-2.5.so
00a32000      8K r----  /lib/libc-2.5.so
00a34000      4K rw---  /lib/libc-2.5.so
00a35000     12K rw---    [ anon ]
00a3a000      8K r-x--  /lib/libdl-2.5.so
00a3c000      4K r----  /lib/libdl-2.5.so
00a3d000      4K rw---  /lib/libdl-2.5.so
00a82000     12K r-x--  /lib/libtermcap.so.2.0.8
00a85000      4K rw---  /lib/libtermcap.so.2.0.8
00d7b000      4K r-x--    [ anon ]
08047000    684K r-x--  /bin/bash
080f2000     20K rw---  /bin/bash
080f7000     20K rw---    [ anon ]
08d6e000    132K rw---    [ anon ]
b7c8d000      8K rw---    [ anon ]
b7c8f000     28K r--s-  /usr/lib/gconv/gconv-modules.cache
b7c96000    940K r----  /usr/lib/locale/locale-archive
b7d81000   2048K r----  /usr/lib/locale/locale-archive
b7f81000      8K rw---    [ anon ]
bfe87000     88K rw---    [ stack ]
total     5444K

gcoreでcore dumpを無理やり取ってみる

# gcore 3579
(no debugging symbols found)
Using host libthread_db library "/lib/libthread_db.so.1".
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
0x00d7b410 in __kernel_vsyscall ()
Saved corefile core.3579

gdbでcore dumpを確認してみる('->'から右は比較のためpmapの実行結果をコピペしている)

# gdb -c ./core.3579
...
Core was generated by `/bin/bash'.
#0  0x00d7b410 in __kernel_vsyscall ()
(gdb) info files
Local core dump file:
        `/root/./core.3579', file type elf32-i386.
        0x001a8000 - 0x001a9000 is load3  -> 001a8000      4K rw---  /lib/libnss_files-2.5.so
        0x008f5000 - 0x008f6000 is load6  -> 008f5000      4K rw---  /lib/ld-2.5.so
        0x00a34000 - 0x00a35000 is load9  -> 00a34000      4K rw---  /lib/libc-2.5.so
        0x00a35000 - 0x00a38000 is load10 -> 00a35000     12K rw---    [ anon ]
        0x00a3d000 - 0x00a3e000 is load13 -> 00a3d000      4K rw---  /lib/libdl-2.5.so
        0x00a85000 - 0x00a86000 is load15 -> 00a85000      4K rw---  /lib/libtermcap.so.2.0.8
        0x00d7b000 - 0x00d7c000 is load16 -> 00d7b000      4K r-x--    [ anon ]
        0x080f2000 - 0x080f7000 is load18 -> 080f2000     20K rw---  /bin/bash
        0x080f7000 - 0x080fc000 is load19 -> 080f7000     20K rw---    [ anon ]
        0x08d6e000 - 0x08d8f000 is load20 -> 08d6e000    132K rw---    [ anon ]
        0xb7c8d000 - 0xb7c8f000 is load21 -> b7c8d000      8K rw---    [ anon ]
        0xb7c8f000 - 0xb7c96000 is load22 -> b7c8f000     28K r--s-  /usr/lib/gconv/gconv-modules.cache
        0xb7c96000 - 0xb7d81000 is load23 -> b7c96000    940K r----  /usr/lib/locale/locale-archive
        0xb7d81000 - 0xb7f81000 is load24 -> b7d81000   2048K r----  /usr/lib/locale/locale-archive
        0xb7f81000 - 0xb7f83000 is load25 -> b7f81000      8K rw---    [ anon ]
        0xbfe87000 - 0xbfe9d000 is load26 -> bfe87000     88K rw---    [ stack ]
(gdb)

ファイルシステム(ext3)の作成

ファイルシステム(ext3)の作成の手順


ディスクの追加

必要に応じ、ディスクを物理的に追加する。

パーティションの作成

パーティションを作成していないのならパーティションを作成する。以下は新たに追加した/dev/sdbにパーティションを作成する例。

[root@localhost ~]# parted /dev/sdb
...
(parted) print
エラー: /dev/sdb を開けません。ディスクラベルが認識できません。
(parted) mklavel
新しいディスクラベル? GPT
(parted) print
/dev/sdbの Disk geometry: 0.000-5120.000 メガバイト
ディスクラベルの種類: gpt
マイナー 開始        終了        ファイルシステム  名前               フラグ
(parted) mkpart
パーティションの種類?  primary/プライマリ? primary
ファイルシステムの種類 [ext2]? ext3
開始? 0
終了? 5120MB
(parted) print
/dev/sdbの Disk geometry: 0.000-5120.000 メガバイト
ディスクラベルの種類: gpt
マイナー 開始        終了        ファイルシステム  名前               フラグ
1        0.017  5119.983
(parted) q

ファイルシステムを作成する

ファイルシステムを作成したいパーティションを指定し、フォーマットする。

[root@localhost ~]# mke2fs -j /dev/sdb1
...

以上

独自認証局を作成する

独自認証局を作成する手順例。

確認環境
  • Debian(etch)
  • openssl 0.9.8c-4etch4
手順
認証局用のディレクトリ及びファイルを作成
~# cd
~# pwd
/root
~# mkdir -p demoCA
~# mkdir -p demoCA/certs
~# mkdir -p demoCA/private
~# mkdir -p demoCA/crl
~# mkdir -p demoCA/newcerts
~# echo "01" > ./demoCA/seria
~# touch ./demoCA/index.txt
認証局証明書と秘密鍵を作成
~#  openssl req -new -x509 -newkey rsa:2048 -out ./demoCA/cacert.pem -keyout ./demoCA/private/cakey.pem -days 1825
...
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
...
Country Name (2 letter code) [AU]:JP
State or Province Name (full name) [Some-State]:KANTO
Locality Name (eg, city) []:KANAGAWA
Organization Name (eg, company) [Internet Widgits Pty Ltd]:NONE
Organizational Unit Name (eg, section) []:NONE
Common Name (eg, YOUR name) []:www33.atwiki.jp/nekonoshin
Email Address []:NONE
認証局証明書の確認
~# openssl x509 -in ./demoCA/cacert.pem -text
認証局の証明書をブラウザが読み込める形式に変更する
~# openssl x509 -inform PEM -outform DER -in ./demoCA/cacert.pem -out ./demoCA/cacert.der

2010年10月16日

yumによるOSアップデートの方法

yumコマンドを使ったOSの最新化方法の手順例。

確認環境
  • CentOS6.0
  • CentOS5.5
手順例
最新情報でアップデートチェックを行うように不要な情報を消す
# yum clean all
アップデート可能なパッケージを確認する
# yum list updates
アップデートする
# yum update
..
Is this os [y/N]: y
...
Complete!
以上 


regeditのGUI画面以外でレジストリを変更する方法

regeditのGUI画面以外でレジストリを変更する手順例。

確認環境
  • Windows XP Pro SP3
手順例
お題
レジストリ設定にもいろいろあるが、本手順例では、以下のように「LANにプロキシサーバーを使用する」のON/OFF方法を扱う。
image
↑↓
image
方法1.レジストリファイル(*.reg)を使う方法
ONにする場合
以下の内容のテキストファイル"proxyon.reg"を作成し、作成したファイルをダブルクリックする。
Windows Registry Editor Version 5.00      
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings]       
"ProxyEnable"=dword:00000001
OFFにする場合
以下の内容のテキストファイル"proxyoff.reg"を作成し、作成したファイルをダブルクリックする。
Windows Registry Editor Version 5.00      
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings]       
"ProxyEnable"=dword:00000000
方法2.バッチプログラムから行う(*.regファイル編)
方法1の*.regファイルを前提に以下で実現可能。
ONにする場合
以下コマンドをバッチプログラムに組み込む
regedit /s proxyon.reg
OFFにする場合
以下コマンドをバッチプログラムに組み込む
regedit /s proxyoff.reg
方法3.バッチプログラムから行う(REGコマンドを使う編)
ONにする場合
以下コマンドをバッチプログラムに組み込む
reg add "HKEY_CURRENT_USER\Software\Microsoft\Wi      
ndows\CurrentVersion\Internet Settings" /v ProxyEnable /t REG_DWORD /d 1 /f
OFFにする場合
以下コマンドをバッチプログラムに組み込む
reg add "HKEY_CURRENT_USER\Software\Microsoft\Wi      
ndows\CurrentVersion\Internet Settings" /v ProxyEnable /t REG_DWORD /d 0 /f 
方法4.VBスクリプト(WSH)から行う
ONにする場合
以下の内容のテキストファイル"proxyon.vbs"を作成し、作成したファイルをダブルクリックする。
Set WshShell=WScript.CreateObject("WScript.Shell")
WshShell.RegWrite "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ProxyEnable","1", "REG_DWORD" 
OFFにする場合
以下の内容のテキストファイル"proxyoff.vbs"を作成し、作成したファイルをダブルクリックする。
Set WshShell=WScript.CreateObject("WScript.Shell") 
WshShell.RegWrite "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ProxyEnable","1", "REG_DWORD 
注意事項
  • レジストリ直接変更の結果をIEに反映するには、IEの再起動が必要
  • "Windows Registry Editor Version 5.00"の文字列は正確に記載が必要
    (無い、不正確などであると、レジストリファイルでは無いとはじかれる。)
以上

2010年10月14日

独自認証局でサイト証明書を作成する

独自認証局でサイト証明書を作成する手順例を示す。


前提

 
以下で作成した独自認証局を前提。
 
 

確認環境

 
       
  • Debian(etch)
  •    
  • openssl 0.9.8c-4etch4
 

手順

 
証明要求の受領とサイト証明書の発行
 
       
  • 証明要求をscp等で以下に持ってくる。※証明要求の発行の仕方はこちらを参照のこと。      
    ~# pwd
    
    /root
    
    ~# ls ./work/site_csr.pem
    
    ./work/site_csr.pem

     

  • サイト証明書を作成する。
       
    ~# openssl ca -out ./work/site_cert.pem -infiles ./work/site_csr.pem
    
    ...
    
    Enter pass phrase for ./demoCA/private/cakey.pem:
    
    ...
    
    Sign the certificate? [y/n]:y
    
    ...
    
    1 out of 1 certificate requests certified, commit? [y/n]y
    
    Write out database with 1 new entries
    
    Data Base Updated
    
    ~#

     

  • サイト証明書を確認する。
       
    ~# openssl x509 -in ./work/site_cert.pem -text

     

サイト証明書の送付
サイト証明書を設定したいWWWサーバにscp等で送付する。

スタックオーバーフロー

"DEBUG HACKS"記載のスタックオーバーフロー事例の追試結果を示す。

 

 

       
  • sum.cを準備する(ソースは参考文献の"DEBUG HACKS"を確認のこと)
  •    
  • コンパイルする      
    $ make sum
    cc     sum.c   -o sum

     
  •  

  • 実行する
       
    $ uname -a
    Linux localhost.localdomain 2.6.18-53.el5PAE #1 SMP Wed Oct 10 16:48:18 EDT 2007 i686 athlon i386 GNU/Linux $ ulimit -c unlimited
    $ ./sum
    セグメンテーション違反です (core dumped)
    $ ls core*
    core.16163

     
  •  

  • gdbで読み込む
       
    $ gdb -c core.16163
    ...
    Program terminated with signal 11, Segmentation fault.
    #0  0x08048454 in ?? ()
    (gdb) p $sp
    $1 = (void *) 0xbf3c0000
    (gdb) info files
    Local core dump file:
            `/home/nekonoshin/proc/sum/core.16163', file type elf32-i386.
            0x00314000 - 0x00315000 is load1
            0x008f4000 - 0x008f5000 is load3
            0x008f5000 - 0x008f6000 is load4
            0x00a32000 - 0x00a34000 is load6
            0x00a34000 - 0x00a35000 is load7
            0x00a35000 - 0x00a38000 is load8
            0x08049000 - 0x0804a000 is load10
            0xb7fef000 - 0xb7ff1000 is load11
            0xbf3c0000 - 0xbffc0000 is load12
    (gdb)

     

load12(stack領域のダンプ)が0xbf3c0000 - 0xbffc0000。スタックポインター($sp)の値、0xbf3c0000はstack領域の範囲外。

参考文献

     
  • DEBUG HACKS, P.53, "HACK#9 デバッグに必要なスタックの基礎知識"吉岡弘隆, 大和一洋, 大岩尚宏, 安部東洋, 吉田俊輔, 株式会社オライリー・ジャパン, ISBN978-4-87311-4040    

gdb - リモートデバッグ

gdbを使ってリモートデバッグを行う手順例を示す。


 

ロスプラットフォームでの開発や、CUIアプリの実際の実行画面を確認しながらのデバッグを行いたい場合にリモートデバッグを使う。

 

環境

 
+-------+    +---------+
|デバッグ|--->|デバッグ  |
|ホスト  |    |ターゲット|
+-------+    +---------+

実行例

デバッグターゲットとデバッグホストが同じだが、2つの端末を用いた例を解説。例は、端末1と端末2の2つの端末が同一マシンの同一ユーザにログインしている状態とする。

     
  • 端末1(デバッグターゲット)でテストプログラムを作成    
    guest@debian5:~$ cat tst.c
    #include <stdio.h>

    int main()
    {
            printf("h"); fflush(stdout);
            printf("e"); fflush(stdout);
            printf("l"); fflush(stdout);
            printf("l"); fflush(stdout);
            printf("o"); fflush(stdout);
            printf(" "); fflush(stdout);
            printf("w"); fflush(stdout);
            printf("o"); fflush(stdout);
            printf("r"); fflush(stdout);
            printf("l"); fflush(stdout);
            printf("d"); fflush(stdout);
            printf("\n"); fflush(stdout);

            return 0;
    }

    guest@debian5:~$ gcc -g tst.c -o tst
    guest@debian5:~$


     

     
  • 端末1(デバッグターゲット)でgdbserverを起動    
    guest@debian5:~$ gdbserver localhost:1234 tst
    Process tst created; pid = 3181
    Listening on port 1234
     
     
  • 端末2(デバッグホスト)でgdbを起動    
    guest@debian5:~$ gdb ./tst
    GNU gdb 6.8-debian
    Copyright (C) 2008 Free Software Foundation, Inc.
    License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
    This is free software: you are free to change and redistribute it.
    There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
    and "show warranty" for details.
    This GDB was configured as "i486-linux-gnu"...
    (gdb) break main
    Breakpoint 1 at 0x8048415: file tst.c, line 5.
    (gdb) target remote localhost:1234
    Remote debugging using localhost:1234
    [New Thread 3181]
    0xb7f07810 in ?? () from /lib/ld-linux.so.2
    (gdb) c
    Continuing.

    Breakpoint 1, main () at tst.c:5
    5               printf("h"); fflush(stdout);
    (gdb) s
    6               printf("e"); fflush(stdout);
    (gdb)
    7               printf("l"); fflush(stdout);
    (gdb)
    8               printf("l"); fflush(stdout);
    (gdb)
    9               printf("o"); fflush(stdout);
    (gdb)
    10              printf(" "); fflush(stdout);
    (gdb)
    11              printf("w"); fflush(stdout);
    (gdb)
    12              printf("o"); fflush(stdout);
    (gdb)
    13              printf("r"); fflush(stdout);
    (gdb)
    14              printf("l"); fflush(stdout);
    (gdb)
    15              printf("d"); fflush(stdout);
    (gdb)
    16              printf("\n"); fflush(stdout);
    (gdb)
    18              return 0;
    (gdb)
    19      }
    (gdb)
    0xb7dbb455 in __libc_start_main () from /lib/i686/cmov/libc.so.6
    (gdb) c
    Continuing.

    Program exited normally.
    (gdb)


     

     
  • 端末1(デバッグターゲット)の表示に以下が追加される(特に"hello world"が端末2のステップ実行に合わせて1文字づつ表示されている状況が必見)    
    Remote debugging from host 127.0.0.1
    hello world

    Child exited with retcode = 0

    Child exited with status 0
    GDBserver exiting
    guest@debian5:~$


     

     
  • 因みに、リモートデバッグをやらずにローカルで直接デバッグすると以下の様になる。 ※"hello world"がデバッガの出力と混ざってしまっている。    
    guest@debian5:~$ gdb ./tst
    GNU gdb 6.8-debian
    Copyright (C) 2008 Free Software Foundation, Inc.
    License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
    This is free software: you are free to change and redistribute it.
    There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
    and "show warranty" for details.
    This GDB was configured as "i486-linux-gnu"...
    (gdb) break main
    Breakpoint 1 at 0x8048415: file tst.c, line 5.
    (gdb) r
    Starting program: /home/guest/tst

    Breakpoint 1, main () at tst.c:5
    5               printf("h"); fflush(stdout);
    (gdb) s
    h6              printf("e"); fflush(stdout);
    (gdb)
    e7              printf("l"); fflush(stdout);
    (gdb)
    l8              printf("l"); fflush(stdout);
    (gdb)
    l9              printf("o"); fflush(stdout);
    (gdb)
    o10             printf(" "); fflush(stdout);
    (gdb)
    11             printf("w"); fflush(stdout);
    (gdb)
    w12             printf("o"); fflush(stdout);
    (gdb)
    o13             printf("r"); fflush(stdout);
    (gdb)
    r14             printf("l"); fflush(stdout);
    (gdb)
    l15             printf("d"); fflush(stdout);
    (gdb)
    d16             printf("\n"); fflush(stdout);
    (gdb)

    18              return 0;
    (gdb)
    19      }
    (gdb)
    0xb7e6f455 in __libc_start_main () from /lib/i686/cmov/libc.so.6
    (gdb) c
    Continuing.

    Program exited normally.
    (gdb)


     

備考

     
  • RHELをターゲットにリモートデバッグを行うとSIGTRAPが大量に発生する。正しい対処法かどうかはわからないが、以下で抑制可能。    
    (gdb) handle SIGTRAP nostop noprint nopass
    SIGTRAP is used by the debugger.
    Are you sure you want to change it? (y or n) y

    Signal        Stop      Print   Pass to program Description
    SIGTRAP       No        No      No              Trace/breakpoint trap
    (gdb)


     

参考資料

     
  • "info gdb"の"Remote Debugging"