2010年10月30日

しって銀座


駅から1分。高架下をくぐって西へ行くと、「しって銀座」に辿り着く。
いい感じの銀座だが、食事処、スーパー、八百屋、豆腐屋、酒屋、薬屋、などなどとり揃っている。


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月28日

すき家尻手駅前店

尻手駅改札出て、左手、尻手黒川道路の信号を渡ったところに「すき家」。

店内は何時も客がいて盛況。弁当コーナーには仕事帰りらしきひとが良く並んでいる。

店の横に空き地があり、5台分の駐車スペースも用意してある。

以前は、ここに「モスバーガー」があった。


スリーエフ尻手駅前店


大きな地図で見る
尻手駅改札出て正面には、コンビニの「スリーエフ」。
店内は、いつも雑誌立ち読みで溢れてる。


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
以上

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日

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

標準出力と標準エラー出力を同じファイルにリダイレクトする方法を記す。
コマンドプロンプトでも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:\> 
参考

[DOS]バッチ処理で環境変数TODAYに今日の日付を代入する方法

WindowsなどのDOSプロンプトから実行するバッチファイル(拡張子BAT)の環境変数TODAYに今日の日付を代入する方法を記す。cpコマンドなどと組み合わせて、ファイルのバックアップを取ったりするのに便利。
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%
ファイルバックアップする例
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%
cp fogefoge.txt fogefoge_%TODAY%.txt

以上

[DOS] 環境変数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"

CentOSでcrashコマンドを試してみる

CentOSでcrashコマンドでカーネルデバッグできる環境を構築する手順例を示す。


まず何も考えずcrashコマンドを叩いてみる。   

# crash

crash 4.0-5.0.3.el5.centos
Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008  Red Hat, Inc.
Copyright (C) 2004, 2005, 2006  IBM Corporation
Copyright (C) 1999-2006  Hewlett-Packard Co
Copyright (C) 2005, 2006  Fujitsu Limited
Copyright (C) 2006, 2007  VA Linux Systems Japan K.K.
Copyright (C) 2005  NEC Corporation
Copyright (C) 1999, 2002, 2007  Silicon Graphics, Inc.
Copyright (C) 1999, 2000, 2001, 2002  Mission Critical Linux, Inc.
This program is free software, covered by the GNU General Public License,
and you are welcome to change it and/or distribute copies of it under
certain conditions.  Enter "help copying" to see the conditions.
This program has absolutely no warranty.  Enter "help warranty" for details.

crash: cannot find booted kernel -- please enter namelist argument

Usage:
  crash [-h [opt]][-v][-s][-i file][-d num] [-S] [mapfile] [namelist] [dumpfile]

Enter "crash -h" for details.
#

なにもエラーが出なければ既に設定はされており、手順はここで終了。

上記の様にエラーがでるなら、http://debuginfo.centos.org/からkernel-debuginfoをダウンロードしてくる。

例では以下をダウンロードしたした。※現在動作中のカーネル版数と同じにすること。

インストールから動作確認まで、以下手順で行う。

# rpm -ihv kernel-debuginfo-common-2.6.18-92.1.1.el5.i686.rpm
# rpm -ihv kernel-debuginfo-2.6.18-92.1.22.el5.i686.rpm
# crash

crash 4.0-5.0.3.el5.centos
Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008  Red Hat, Inc.
Copyright (C) 2004, 2005, 2006  IBM Corporation
Copyright (C) 1999-2006  Hewlett-Packard Co
Copyright (C) 2005, 2006  Fujitsu Limited
Copyright (C) 2006, 2007  VA Linux Systems Japan K.K.
Copyright (C) 2005  NEC Corporation
Copyright (C) 1999, 2002, 2007  Silicon Graphics, Inc.
Copyright (C) 1999, 2000, 2001, 2002  Mission Critical Linux, Inc.
This program is free software, covered by the GNU General Public License,
and you are welcome to change it and/or distribute copies of it under
certain conditions.  Enter "help copying" to see the conditions.
This program has absolutely no warranty.  Enter "help warranty" for details.

GNU gdb 6.1
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "i686-pc-linux-gnu"...

      KERNEL: /usr/lib/debug/lib/modules/2.6.18-92.1.22.el5/vmlinux
    DUMPFILE: /dev/crash
        CPUS: 1
        DATE: Thu Mar  5 12:22:00 2009
      UPTIME: 02:24:35
LOAD AVERAGE: 2.14, 0.97, 0.65
       TASKS: 159
    NODENAME: localhost.localdomain
     RELEASE: 2.6.18-92.1.22.el5
     VERSION: #1 SMP Tue Dec 16 12:03:43 EST 2008
     MACHINE: i686  (1728 Mhz)
      MEMORY: 256 MB
         PID: 7203
     COMMAND: "crash"
        TASK: c75ef550  [THREAD_INFO: c6d1a000]
         CPU: 0
       STATE: TASK_RUNNING (ACTIVE)

crash>

完了。

gdbでcore dumpをいろんなパターンで調べてみる

gdbの使い方を知るため、各種試行した内容を以下に残す。


 

※具体的な各ファイルの読み込ませ方まで記載していない。後日改善予定。

 

試行1.core dumpのみでgdbを起動してみる。 

 
$ gdb -c core.7030 
GNU gdb Red Hat Linux (6.5-37.el5_2.2rh)
Copyright (C) 2006 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "i386-redhat-linux-gnu".
(no debugging symbols found)
Using host libthread_db library "/lib/libthread_db.so.1".
Core was generated by `./test_core'.
Program terminated with signal 8, Arithmetic exception.
#0  0x0012f3c3 in ?? ()
(gdb) where
#0  0x0012f3c3 in ?? ()
#1  0x00000001 in ?? ()
#2  0xbffedfc0 in ?? ()
#3  0x0012f3ac in ?? ()
#4  0x00207658 in ?? ()
#5  0xbffedfa8 in ?? ()
#6  0x0804845a in ?? ()
#7  0x001fa5d0 in ?? ()
#8  0xbffedfc0 in ?? ()
#9  0xbffee018 in ?? ()
#10 0x0021fdec in ?? ()
#11 0x00206ca0 in ?? ()
#12 0x08048480 in ?? ()
#13 0xbffee018 in ?? ()
#14 0x0021fdec in ?? ()
#15 0x00000001 in ?? ()
#16 0xbffee044 in ?? ()
#17 0xbffee04c in ?? ()
#18 0x00207810 in ?? ()
#19 0x00000000 in ?? ()
(gdb)

とりあえず、アドレス0x0012f3c3で落ちたのが分かる。

ただ、この状態だとマシン語を逆アセンブルしながら追わないことには分からない。

試行2.core dumpファイルとexeファイルを指定してみる。

$ gdb test_core -c core.7030 
GNU gdb Red Hat Linux (6.5-37.el5_2.2rh)
Copyright (C) 2006 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "i386-redhat-linux-gnu"...Using host libthread_db library "/lib/libthread_db.so.1".

warning: Can't read pathname for load map: 入力/出力エラーです.
Error while mapping shared library sections:
./liba.so.1: そのようなファイルやディレクトリはありません.
Error while reading shared library symbols:
./liba.so.1: そのようなファイルやディレクトリはありません.
Reading symbols from /lib/libc.so.6...done.
Loaded symbols for /lib/libc.so.6
Reading symbols from /lib/ld-linux.so.2...done.
Loaded symbols for /lib/ld-linux.so.2
Error while reading shared library symbols:
./liba.so.1: そのようなファイルやディレクトリはありません.
Core was generated by `./test_core'.
Program terminated with signal 8, Arithmetic exception.
#0  0x0012f3c3 in ?? ()
(gdb) where
#0  0x0012f3c3 in ?? ()
#1  0x00000001 in ?? ()
#2  0xbffedfc0 in ?? ()
#3  0x0012f3ac in ?? ()
#4  0x00207658 in _r_debug ()
#5  0xbffedfa8 in ?? ()
#6  0x0804845a in main () at test_core.c:8
(gdb)

test_core.cの8行目から呼び出されてとんだ先の0x0012f3c3で落ちたのは分かるようになった。0x0012f3c3に何の処理があるのか分からない。情報が少なくてデバッグにはならない。

試行3.core dumpファイルとexeファイルとliba.so.1(自分で作った共有ライブラリ)で調べてみる 

$ gdb test_core -c core.7030 
GNU gdb Red Hat Linux (6.5-37.el5_2.2rh)
Copyright (C) 2006 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "i386-redhat-linux-gnu"...Using host libthread_db library "/lib/libthread_db.so.1".

warning: Can't read pathname for load map: 入力/出力エラーです.
Reading symbols from /home/takeshi/temp/liba.so.1...done.
Loaded symbols for ./liba.so.1
Reading symbols from /lib/libc.so.6...done.
Loaded symbols for /lib/libc.so.6
Reading symbols from /lib/ld-linux.so.2...done.
Loaded symbols for /lib/ld-linux.so.2
Core was generated by `./test_core'.
Program terminated with signal 8, Arithmetic exception.
#0  0x0012f3c3 in liba () at liba.c:6
6       liba.c: そのようなファイルやディレクトリはありません.
        in liba.c
(gdb) where
#0  0x0012f3c3 in liba () at liba.c:6
#1  0x0804845a in main () at test_core.c:8
(gdb)

liba.cの6行目の処理で落ちたことが分かるようになった。

試行4.さらにソースコードも読み込ませてみる

$ gdb test_core -c core.7030 
GNU gdb Red Hat Linux (6.5-37.el5_2.2rh)
Copyright (C) 2006 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "i386-redhat-linux-gnu"...Using host libthread_db library "/lib/libthread_db.so.1".

warning: Can't read pathname for load map: 入力/出力エラーです.
Reading symbols from /home/takeshi/temp/liba.so.1...done.
Loaded symbols for ./liba.so.1
Reading symbols from /lib/libc.so.6...done.
Loaded symbols for /lib/libc.so.6
Reading symbols from /lib/ld-linux.so.2...done.
Loaded symbols for /lib/ld-linux.so.2
Core was generated by `./test_core'.
Program terminated with signal 8, Arithmetic exception.
#0  0x0012f3c3 in liba () at liba.c:6
6               int i = 10 / 0;
(gdb) where
#0  0x0012f3c3 in liba () at liba.c:6
#1  0x0804845a in main () at test_core.c:8
(gdb)

liba.cの6行目のint i = 10 /0;の処理で落ちたことが分かる。0での除算は致命的エラーなので、落ちて当たり前だ。

おまけ.ソースコードliba.cの6行目を変更してみる

$ gdb test_core -c core.7030 
GNU gdb Red Hat Linux (6.5-37.el5_2.2rh)
Copyright (C) 2006 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "i386-redhat-linux-gnu"...Using host libthread_db library "/lib/libthread_db.so.1".

warning: Can't read pathname for load map: 入力/出力エラーです.
Reading symbols from /home/takeshi/temp/liba.so.1...done.
Loaded symbols for ./liba.so.1
Reading symbols from /lib/libc.so.6...done.
Loaded symbols for /lib/libc.so.6
Reading symbols from /lib/ld-linux.so.2...done.
Loaded symbols for /lib/ld-linux.so.2
Core was generated by `./test_core'.
Program terminated with signal 8, Arithmetic exception.
#0  0x0012f3c3 in liba () at liba.c:6

warning: Source file is more recent than executable.
6               /* comment add for test */
(gdb) where
#0  0x0012f3c3 in liba () at liba.c:6
#1  0x0804845a in main () at test_core.c:8
(gdb)

表示されるソースが/* comment add for test */に変わった。バイナリとソースのバージョンは正確に一致していないとデバッグは出来ないようだ。

2010年10月13日

ポートを開いているプロセスを特定する(Linux)

TCPおよびUDPポートを占有しているプロセスを特定する方法を示す。


[root@localhost ~]# netstat -nap
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PI
D/Program name
tcp        0      0 0.0.0.0:961                 0.0.0.0:*                   LISTEN      24
75/rpc.statd
tcp        0      0 0.0.0.0:111                 0.0.0.0:*                   LISTEN      24
50/portmap
tcp        0      0 127.0.0.1:631               0.0.0.0:*                   LISTEN      27
49/cupsd
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      27
81/sendmail: acce
tcp        0      0 :::22                       :::*                        LISTEN      27
38/sshd
tcp        0    148 ::ffff:192.168.201.129:22   ::ffff:192.168.201.1:3255   ESTABLISHED 31
42/1
udp        0      0 0.0.0.0:955                 0.0.0.0:*                               24
75/rpc.statd
udp        0      0 0.0.0.0:958                 0.0.0.0:*                               24
75/rpc.statd
udp        0      0 0.0.0.0:68                  0.0.0.0:*                               23
64/dhclient
udp        0      0 0.0.0.0:5353                0.0.0.0:*                               28
96/avahi-daemon:
udp        0      0 0.0.0.0:111                 0.0.0.0:*                               24
50/portmap
udp        0      0 0.0.0.0:36469               0.0.0.0:*                               28
96/avahi-daemon:
udp        0      0 0.0.0.0:631                 0.0.0.0:*                               27
49/cupsd
udp        0      0 :::51878                    :::*                                    28
96/avahi-daemon:
udp        0      0 :::5353                     :::*                                    28
96/avahi-daemon:
...

>

2010年10月12日

ファイルを開いているプロセスを特定する方法(Linux)

ファイルを開いているプロセスを特定する方法を示す。

  • fuserで/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
  • lsofで/dev/nullをオープンしているプロセスを特定
    [root@localhost ~]# lsof /dev/null
    COMMAND    PID      USER   FD   TYPE DEVICE SIZE NODE NAME
    udevd      568      root    0u   CHR    1,3      1446 /dev/null
    udevd      568      root    1u   CHR    1,3      1446 /dev/null
    udevd      568      root    2u   CHR    1,3      1446 /dev/null
    dhclient  2364      root    0u   CHR    1,3      1446 /dev/null
    dhclient  2364      root    1u   CHR    1,3      1446 /dev/null
    dhclient  2364      root    2u   CHR    1,3      1446 /dev/null
    portmap   2450       rpc    0u   CHR    1,3      1446 /dev/null
    portmap   2450       rpc    1u   CHR    1,3      1446 /dev/null
    portmap   2450       rpc    2u   CHR    1,3      1446 /dev/null
    rpc.statd 2475      root    0u   CHR    1,3      1446 /dev/null
    rpc.statd 2475      root    1u   CHR    1,3      1446 /dev/null
    rpc.statd 2475      root    2u   CHR    1,3      1446 /dev/null
    rpc.idmap 2508      root    0u   CHR    1,3      1446 /dev/null
    rpc.idmap 2508      root    1u   CHR    1,3      1446 /dev/null
    rpc.idmap 2508      root    2u   CHR    1,3      1446 /dev/null
    rpc.idmap 2508      root    3u   CHR    1,3      1446 /dev/null
    dbus-daem 2588      dbus    0u   CHR    1,3      1446 /dev/null
    dbus-daem 2588      dbus    1u   CHR    1,3      1446 /dev/null
    dbus-daem 2588      dbus    2u   CHR    1,3      1446 /dev/null
    dbus-daem 2588      dbus    4u   CHR    1,3      1446 /dev/null
    hcid      2599      root    0u   CHR    1,3      1446 /dev/null
    hcid      2599      root    1u   CHR    1,3      1446 /dev/null
    hcid      2599      root    2u   CHR    1,3      1446 /dev/null
    sdpd      2603      root    0u   CHR    1,3      1446 /dev/null
    sdpd      2603      root    1u   CHR    1,3      1446 /dev/null
    sdpd      2603      root    2u   CHR    1,3      1446 /dev/null
    pcscd     2665      root    0u   CHR    1,3      1446 /dev/null
    pcscd     2665      root    1u   CHR    1,3      1446 /dev/null
    pcscd     2665      root    2u   CHR    1,3      1446 /dev/null
    hidd      2684      root    0u   CHR    1,3      1446 /dev/null
    hidd      2684      root    1u   CHR    1,3      1446 /dev/null
    hidd      2684      root    2u   CHR    1,3      1446 /dev/null
    automount 2704      root    0u   CHR    1,3      1446 /dev/null
    automount 2704      root    1u   CHR    1,3      1446 /dev/null
    automount 2704      root    2u   CHR    1,3      1446 /dev/null
    acpid     2724      root    0r   CHR    1,3      1446 /dev/null
    sshd      2738      root    0u   CHR    1,3      1446 /dev/null
    sshd      2738      root    1u   CHR    1,3      1446 /dev/null
    sshd      2738      root    2u   CHR    1,3      1446 /dev/null
    xinetd    2761      root    0r   CHR    1,3      1446 /dev/null
    xinetd    2761      root    1r   CHR    1,3      1446 /dev/null
    xinetd    2761      root    2r   CHR    1,3      1446 /dev/null
    sendmail  2781      root    0r   CHR    1,3      1446 /dev/null
    sendmail  2781      root    1w   CHR    1,3      1446 /dev/null
    sendmail  2781      root    2w   CHR    1,3      1446 /dev/null
    sendmail  2789     smmsp    0r   CHR    1,3      1446 /dev/null
    sendmail  2789     smmsp    1w   CHR    1,3      1446 /dev/null
    sendmail  2789     smmsp    2w   CHR    1,3      1446 /dev/null
    crond     2812      root    0u   CHR    1,3      1446 /dev/null
    crond     2812      root    1u   CHR    1,3      1446 /dev/null
    crond     2812      root    2u   CHR    1,3      1446 /dev/null
    xfs       2845       xfs    0u   CHR    1,3      1446 /dev/null
    xfs       2845       xfs    1u   CHR    1,3      1446 /dev/null
    xfs       2845       xfs    2u   CHR    1,3      1446 /dev/null
    anacron   2856      root    0r   CHR    1,3      1446 /dev/null
    anacron   2856      root    1w   CHR    1,3      1446 /dev/null
    anacron   2856      root    2w   CHR    1,3      1446 /dev/null
    atd       2866      root    0u   CHR    1,3      1446 /dev/null
    atd       2866      root    1u   CHR    1,3      1446 /dev/null
    atd       2866      root    2u   CHR    1,3      1446 /dev/null
    avahi-dae 2896     avahi    0r   CHR    1,3      1446 /dev/null
    avahi-dae 2896     avahi    1w   CHR    1,3      1446 /dev/null
    avahi-dae 2896     avahi    2w   CHR    1,3      1446 /dev/null
    avahi-dae 2897     avahi    0r   CHR    1,3      1446 /dev/null
    avahi-dae 2897     avahi    1w   CHR    1,3      1446 /dev/null
    avahi-dae 2897     avahi    2w   CHR    1,3      1446 /dev/null
    hald      2908 haldaemon    0u   CHR    1,3      1446 /dev/null
    hald      2908 haldaemon    1u   CHR    1,3      1446 /dev/null
    hald      2908 haldaemon    2u   CHR    1,3      1446 /dev/null
    hald-runn 2909      root    0r   CHR    1,3      1446 /dev/null
    hald-runn 2909      root    1u   CHR    1,3      1446 /dev/null
    hald-runn 2909      root    2u   CHR    1,3      1446 /dev/null
    hald-addo 2918 haldaemon    0r   CHR    1,3      1446 /dev/null
    hald-addo 2918 haldaemon    1u   CHR    1,3      1446 /dev/null
    hald-addo 2918 haldaemon    2u   CHR    1,3      1446 /dev/null
    hald-addo 2922 haldaemon    0r   CHR    1,3      1446 /dev/null
    hald-addo 2922 haldaemon    1u   CHR    1,3      1446 /dev/null
    hald-addo 2922 haldaemon    2u   CHR    1,3      1446 /dev/null
    hald-addo 2931      root    0r   CHR    1,3      1446 /dev/null
    hald-addo 2931      root    1u   CHR    1,3      1446 /dev/null
    hald-addo 2931      root    2u   CHR    1,3      1446 /dev/null
    yum-updat 3002      root    0u   CHR    1,3      1446 /dev/null
    yum-updat 3002      root    1u   CHR    1,3      1446 /dev/null
    yum-updat 3002      root    2u   CHR    1,3      1446 /dev/null
    gam_serve 3004      root    0r   CHR    1,3      1446 /dev/null
    gam_serve 3004      root    1w   CHR    1,3      1446 /dev/null
    gam_serve 3004      root    2w   CHR    1,3      1446 /dev/null
    smartd    3006      root    0u   CHR    1,3      1446 /dev/null
    smartd    3006      root    1u   CHR    1,3      1446 /dev/null
    smartd    3006      root    2u   CHR    1,3      1446 /dev/null
    gdm-binar 3017      root    0u   CHR    1,3      1446 /dev/null
    gdm-binar 3017      root    1w   CHR    1,3      1446 /dev/null
    gdm-binar 3017      root    2w   CHR    1,3      1446 /dev/null
    gdm-binar 3112      root    0r   CHR    1,3      1446 /dev/null
    gdm-binar 3112      root    1u   CHR    1,3      1446 /dev/null
    gdm-binar 3112      root    2u   CHR    1,3      1446 /dev/null
    gdm-rh-se 3114      root    0r   CHR    1,3      1446 /dev/null
    gdm-rh-se 3114      root    2w   CHR    1,3      1446 /dev/null
    gdmgreete 3138       gdm    2u   CHR    1,3      1446 /dev/null
    sshd      3142      root    0u   CHR    1,3      1446 /dev/null
    sshd      3142      root    1u   CHR    1,3      1446 /dev/null
    sshd      3142      root    2u   CHR    1,3      1446 /dev/null
    [root@localhost ~]#

LVM上のファイルシステム(ext3)の拡張

LVM上のファイルシステム(ext3)の拡張する手順例を示す。

確認環境

  • RHEL 5.4 on VMware Server 2

  • ファイルシステム(ext3)をアンマウントする
    [root@localhost ~]# df
    Filesystem           1K-ブロック    使用   使用可 使用% マウント位置
    /dev/sda2             10154020   3557116   6072784  37% /
    /dev/sda1               256666     37292    206122  16% /boot
    tmpfs                    62192         0     62192   0% /dev/shm
    /dev/mapper/VG0001-LV0001
                             51559      4956     43941  11% /mnt
    [root@localhost ~]# umount /mnt
  • LV(論理ボリューム)を拡張する
    [root@localhost ~]# lvextend -L+12M /dev/VG0001/LV0001
      Extending logical volume LV0001 to 64.00 MB
      Logical volume LV0001 successfully resized
    [root@localhost ~]# vgdisplay -v VG0001
        Using volume group(s) on command line
        Finding volume group "VG0001"
      --- Volume group ---
      VG Name               VG0001
      System ID
      Format                lvm2
      Metadata Areas        2
      Metadata Sequence No  5
      VG Access             read/write
      VG Status             resizable
      MAX LV                0
      Cur LV                1
      Open LV               0
      Max PV                0
      Cur PV                2
      Act PV                2
      VG Size               7.80 GB
      PE Size               4.00 MB
      Total PE              1998
      Alloc PE / Size       16 / 64.00 MB
      Free  PE / Size       1982 / 7.74 GB
      VG UUID               Fusrtt-uqYJ-uNdZ-fepf-5hpt-554b-zKQuIj
    
      --- Logical volume ---
      LV Name                /dev/VG0001/LV0001
      VG Name                VG0001
      LV UUID                V6JgvS-CD33-WvBo-TfE2-qRu2-765V-0YAhyR
      LV Write Access        read/write
      LV Status              available
      # open                 0
      LV Size                64.00 MB
      Current LE             16
      Segments               1
      Allocation             inherit
      Read ahead sectors     auto
      - currently set to     256
      Block device           253:0
    
      --- Physical volumes ---
      PV Name               /dev/sdb1
      PV UUID               EhMTvI-k3fq-eoRV-Hwkd-iA7G-p3Lk-QjSOsC
      PV Status             allocatable
      Total PE / Free PE    999 / 983
    
      PV Name               /dev/sdb2
      PV UUID               zbmif7-hWP2-2VA2-sFNp-vbSw-O7Ce-rMErmL
      PV Status             allocatable
      Total PE / Free PE    999 / 999
    
    [root@localhost ~]#
  • ファイルシステム(ext3)を拡張する
    [root@localhost ~]# e2fsck -nfv /dev/VG0001/LV0001
    e2fsck 1.39 (29-May-2006)
    Pass 1: Checking inodes, blocks, and sizes
    Pass 2: Checking directory structure
    Pass 3: Checking directory connectivity
    Pass 4: Checking reference counts
    Pass 5: Checking group summary information
    
          11 inodes used (0.08%)
           1 non-contiguous inode (9.1%)
             # of inodes with ind/dind/tind blocks: 0/0/0
        6645 blocks used (12.48%)
           0 bad blocks
           0 large files
    
           0 regular files
           2 directories
           0 character device files
           0 block device files
           0 fifos
           0 links
           0 symbolic links (0 fast symbolic links)
           0 sockets
    --------
           2 files
    [root@localhost ~]# e2fsck -f /dev/VG0001/LV0001
    e2fsck 1.39 (29-May-2006)
    Pass 1: Checking inodes, blocks, and sizes
    Pass 2: Checking directory structure
    Pass 3: Checking directory connectivity
    Pass 4: Checking reference counts
    Pass 5: Checking group summary information
    /dev/VG0001/LV0001: 11/13328 files (9.1% non-contiguous), 6645/53248 blocks
    [root@localhost ~]# resize2fs /dev/VG0001/LV0001
    resize2fs 1.39 (29-May-2006)
    Resizing the filesystem on /dev/VG0001/LV0001 to 65536 (1k) blocks.
    The filesystem on /dev/VG0001/LV0001 is now 65536 blocks long.
    
    [root@localhost ~]#
  • 再度マウントする
    [root@localhost ~]# mount /dev/VG0001/LV0001 /mnt
    [root@localhost ~]# df
    Filesystem           1K-ブロック    使用   使用可 使用% マウント位置
    /dev/sda2             10154020   3557124   6072776  37% /
    /dev/sda1               256666     37292    206122  16% /boot
    tmpfs                    62192         0     62192   0% /dev/shm
    /dev/mapper/VG0001-LV0001
                             63605      5163     55821   9% /mnt
    [root@localhost ~]#

LVM上のファイルシステム(ext3)の縮小

LVM上のファイルシステム(ext3)を縮小する手順例を示す。

確認環境

  • RHEL 5.4 on VMware Server 2

  • ファイルシステム(ext3)をアンマウントする
    [root@localhost ~]# df
    Filesystem           1K-ブロック    使用   使用可 使用% マウント位置
    /dev/sda2             10154020   3557124   6072776  37% /
    /dev/sda1               256666     37292    206122  16% /boot
    tmpfs                    62192         0     62192   0% /dev/shm
    /dev/mapper/VG0001-LV0001
                             63605      5163     55821   9% /mnt
    [root@localhost ~]# umount /mnt
    [root@localhost ~]#
  • ファイルシステム(ext3)を縮小する
    [root@localhost ~]# e2fsck -nfv /dev/VG0001/LV0001
    e2fsck 1.39 (29-May-2006)
    Pass 1: Checking inodes, blocks, and sizes
    Pass 2: Checking directory structure
    Pass 3: Checking directory connectivity
    Pass 4: Checking reference counts
    Pass 5: Checking group summary information
    
          11 inodes used (0.07%)
           1 non-contiguous inode (9.1%)
             # of inodes with ind/dind/tind blocks: 0/0/0
        7094 blocks used (10.82%)
           0 bad blocks
           0 large files
    
           0 regular files
           2 directories
           0 character device files
           0 block device files
           0 fifos
           0 links
           0 symbolic links (0 fast symbolic links)
           0 sockets
    --------
           2 files
    [root@localhost ~]# e2fsck -f /dev/VG0001/LV0001
    e2fsck 1.39 (29-May-2006)
    Pass 1: Checking inodes, blocks, and sizes
    Pass 2: Checking directory structure
    Pass 3: Checking directory connectivity
    Pass 4: Checking reference counts
    Pass 5: Checking group summary information
    /dev/VG0001/LV0001: 11/15232 files (9.1% non-contiguous), 7094/65536 blocks
    [root@localhost ~]# resize2fs /dev/VG0001/LV0001 53248
    resize2fs 1.39 (29-May-2006)
    Resizing the filesystem on /dev/VG0001/LV0001 to 53248 (1k) blocks.
    The filesystem on /dev/VG0001/LV0001 is now 53248 blocks long.
    
    [root@localhost ~]#
  • LV(論理ボリューム)を縮小する
    [root@localhost ~]# lvreduce -L-12M /dev/VG0001/LV0001
      WARNING: Reducing active logical volume to 52.00 MB
      THIS MAY DESTROY YOUR DATA (filesystem etc.)
    Do you really want to reduce LV0001? [y/n]: y
      Reducing logical volume LV0001 to 52.00 MB
      Logical volume LV0001 successfully resized
    [root@localhost ~]# vgdisplay -v VG0001
        Using volume group(s) on command line
        Finding volume group "VG0001"
      --- Volume group ---
      VG Name               VG0001
      System ID
      Format                lvm2
      Metadata Areas        2
      Metadata Sequence No  6
      VG Access             read/write
      VG Status             resizable
      MAX LV                0
      Cur LV                1
      Open LV               0
      Max PV                0
      Cur PV                2
      Act PV                2
      VG Size               7.80 GB
      PE Size               4.00 MB
      Total PE              1998
      Alloc PE / Size       13 / 52.00 MB
      Free  PE / Size       1985 / 7.75 GB
      VG UUID               Fusrtt-uqYJ-uNdZ-fepf-5hpt-554b-zKQuIj
    
      --- Logical volume ---
      LV Name                /dev/VG0001/LV0001
      VG Name                VG0001
      LV UUID                V6JgvS-CD33-WvBo-TfE2-qRu2-765V-0YAhyR
      LV Write Access        read/write
      LV Status              available
      # open                 0
      LV Size                52.00 MB
      Current LE             13
      Segments               1
      Allocation             inherit
      Read ahead sectors     auto
      - currently set to     256
      Block device           253:0
    
      --- Physical volumes ---
      PV Name               /dev/sdb1
      PV UUID               EhMTvI-k3fq-eoRV-Hwkd-iA7G-p3Lk-QjSOsC
      PV Status             allocatable
      Total PE / Free PE    999 / 986
    
      PV Name               /dev/sdb2
      PV UUID               zbmif7-hWP2-2VA2-sFNp-vbSw-O7Ce-rMErmL
      PV Status             allocatable
      Total PE / Free PE    999 / 999
    
    [root@localhost ~]# e2fsck -nfv /dev/VG0001/LV0001
    e2fsck 1.39 (29-May-2006)
    Pass 1: Checking inodes, blocks, and sizes
    Pass 2: Checking directory structure
    Pass 3: Checking directory connectivity
    Pass 4: Checking reference counts
    Pass 5: Checking group summary information 
    
          11 inodes used (0.08%)
           1 non-contiguous inode (9.1%)
             # of inodes with ind/dind/tind blocks: 0/0/0
        6645 blocks used (12.48%)
           0 bad blocks
           0 large files
    
           0 regular files
           2 directories
           0 character device files
           0 block device files
           0 fifos
           0 links
           0 symbolic links (0 fast symbolic links)
           0 sockets
    --------
           2 files
    [root@localhost ~]#
  • 再度マウントする
    [root@localhost ~]# mount /dev/VG0001/LV0001 /mnt
    [root@localhost ~]# df
    Filesystem           1K-ブロック    使用   使用可 使用% マウント位置
    /dev/sda2             10154020   3557132   6072768  37% /
    /dev/sda1               256666     37292    206122  16% /boot
    tmpfs                    62192         0     62192   0% /dev/shm
    /dev/mapper/VG0001-LV0001
                             51559      4956     45006  10% /mnt
    [root@localhost ~]#

LVMの削除

一度作成したLVを完全に削除する方法を示す。

確認環境

  • RHEL5.4 on VMware Server 2

  • ファイルシステムをアンマウントする
    • [root@localhost ~]# df
      Filesystem           1K-ブロック    使用   使用可 使用% マウント位置
      /dev/sda2             10154020   3557092   6072808  37% /
      /dev/sda1               256666     37292    206122  16% /boot
      tmpfs                    62192         0     62192   0% /dev/shm
      /dev/mapper/VG0001-LV0001
                               51559      4956     43941  11% /mnt
      [root@localhost ~]# umount /mnt
      [root@localhost ~]# 
  • LVを削除する
    • [root@localhost ~]# lvremove /dev/VG0001/LV0001
      Do you really want to remove active logical volume LV0001? [y/n]: y
        Logical volume "LV0001" successfully removed
      [root@localhost ~]#
  • VGを削除する
    • [root@localhost ~]# vgremove /dev/VG0001
        Volume group "VG0001" successfully removed
      [root@localhost ~]#
  • PVを削除する
特に手順はない。あえて書くなら、parted等でパーティションを消してしまうのが手順。

bashで無限ループ

bashシェルスクリプトで無限ループを書く方法を示す。
止めるまで何かの情報を表示し続けたいときなどに便利。



  • 1行無限ループ
[root@localhost ~]# while :; do echo hello; sleep 10; done
hello
hello
[root@localhost ~]#
  • スクリプトで無限ループ
[root@localhost ~]# cat mugen.sh
#!/bin/bash
while :
do
        echo hello
        sleep 10
done
[root@localhost ~]# sh ./mugen.sh
hello
hello
[root@localhost ~]#

2010年10月11日

KVM仮想マシンのVNCサーバ設定

KVM仮想マシンにVNCサーバを設定する方法を示す。

確認環境

  • CentOS5.5(Intel64)

設定手順

※KVM仮想マシン'test'に設定すると仮定。作業中はKVM仮想マシンは停止のこと。

1. /etc/libvirt/qemu/test.xml 定義ファイル編集

ファイル中の<graphicsで始まる行を以下のように編集する。
[編集前]
<graphics type='vnc' port='-1' autoport='yes' keymap='ja'/>
[編集後]
<graphics type='vnc' port='5950' autoport='no' listen='0.0.0.0' keymap='ja'/>

2. 定義の反映
# virsh define  /etc/libvirt/qemu/test.xml

以上