2010年10月29日
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) の使用例
使い方
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
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カーネル版数一覧
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] |
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 |
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 |
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のメニューバーをリネーム
デフォルトの"MenuBat"という名前を、":MenuBar"に変更して、一覧に出てこないようにしたく、調べた際の結果。
確認環境
- pukiwiki 1.4.7
1.pukiwiki.ini.phpの135行目あたりを以下のように編集
$menubar = 'MenuBar' → ':MenuBar'2."MenuBar"ページを":MenuBar"へリネーム
以上
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/ pukiwikipukiwiki用の定義を作成
[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を無効にする
本家にも書いてあるが、備忘録として自ブログに記す。
手順例
1. "pukiwiki.ini.php"を開く
2. 175行目辺りを以下の様に編集
$nowikiname = 0; → = 1;確認Version
- 1.4.7
XAMPP1.7.0Windows版のインストール手順例
- "xampp-win32-1.7.0-installer.exe"をクリック ※セキュリティ警告のポップアップが出た場合は、[実行(R)]をクリック
- "Japanese"を選択
- [次へ(N)>]をクリック
- "c:\xampp"を確認し、[次へ(N)>]をクリック
- "Apacheをサービスとしてインストール"を追加選択し、[インストール]をクリック
- [完了(E)]をクリック ※Windowsセキュリティの重要な警告が出た場合は、[ブロックを解除する(U)]をクリック
- [はい]をクリック
- [はい]をクリック
確認OS
- Windows XP SP3
- Windows Vista SP1 ※インストール最初に警告が出るが上記手順であれば問題ない
2010年10月21日
[PHP]ファイルタイムスタンプを表示する。
確認環境
- Windows XP
- PHP5.3.1 (XAMPP for Windows 1.7.3に同梱されていたもの)
以下内容でファイル"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に今日の日付を代入する方法
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に現在時刻を代入
以下のバッチ処理で可能。
for /f "tokens=1-3 delims=:.- " %%A in ('time /t') do ( set HH=%%A&set MM=%%B) set NOW=%HH%%MM%以上
2010年10月19日
カーネル再構築
必要パッケージの導入(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アップデートの方法
確認環境
- CentOS6.0
- CentOS5.5
最新情報でアップデートチェックを行うように不要な情報を消す
# yum clean allアップデート可能なパッケージを確認する
# yum list updatesアップデートする
# yum update .. Is this os [y/N]: y ... Complete!
regeditのGUI画面以外でレジストリを変更する方法
確認環境
- Windows XP Pro SP3
お題
レジストリ設定にもいろいろあるが、本手順例では、以下のように「LANにプロキシサーバーを使用する」のON/OFF方法を扱う。
↑↓
方法1.レジストリファイル(*.reg)を使う方法
ONにする場合
以下の内容のテキストファイル"proxyon.reg"を作成し、作成したファイルをダブルクリックする。
Windows Registry Editor Version 5.00 [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings] "ProxyEnable"=dword:00000001OFFにする場合
以下の内容のテキストファイル"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.regOFFにする場合
以下コマンドをバッチプログラムに組み込む
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 /fOFFにする場合
以下コマンドをバッチプログラムに組み込む
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領域の範囲外。
参考文献
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 worldChild 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/tstBreakpoint 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) ySignal Stop Print Pass to program Description
SIGTRAP No No No Trace/breakpoint trap
(gdb)
参考資料
- "info gdb"の"Remote Debugging"
CentOSでcrashコマンドを試してみる
CentOSでcrashコマンドでカーネルデバッグできる環境を構築する手順例を示す。
まず何も考えずcrashコマンドを叩いてみる。
# crashcrash 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をダウンロードしてくる。
例では以下をダウンロードしたした。※現在動作中のカーネル版数と同じにすること。
- http://debuginfo.centos.org/5/i386/kernel-debuginfo-2.6.18-92.1.22.el5.i686.rpm
- http://debuginfo.centos.org/5/i386/kernel-debuginfo-common-2.6.18-92.1.1.el5.i686.rpm
インストールから動作確認まで、以下手順で行う。
# 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
# crashcrash 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:6warning: 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)の拡張
確認環境
- 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)の縮小
確認環境
- 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の削除
確認環境
- 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 ~]#
[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 ~]#
[root@localhost ~]# vgremove /dev/VG0001 Volume group "VG0001" successfully removed [root@localhost ~]#
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サーバ設定
確認環境
- CentOS5.5(Intel64)
設定手順
ファイル中の<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