2012/05/02 command-2005

command-2005

スペースを含むディレクトリやファイルを cp コマンドでコピー

  • bash の for ループだとスペースを含むファイルリスト、例えば「Ahmad Jamal」であれば、「Ahmad」と「Jamal」に分かれてしまって上手く行かない。※for ループの例、for i in `cat list` ;do echo $i;done
  • そこで、ls コマンドで取得したファイルリストを、下記のような while read を使ったシェルスクリプトに読み込ませ、バッチシェルを出力する。
  • まず、ファイル名のリストを作成
ls /media/disk-1/MyMusic/Music > copy-from-list
  • バッチ作成のためのシェルスクリプトを作成(このスクリプトのファイル名を batch-create.sh とする。
vi batch-create.sh
=================================
while read LINE; do
 echo cp -r \"/media/disk-1/MyMusic/Music/$LINE\" /media/disk-2/MyMusic/Music/
done
=================================
  • ファイルリストを読み込ませてバッチを作成する。
sh batch-create.sh < copy-from-list > copy-batch.sh
  • バッチを実行する。
sh copy-batch.sh
  • タイムスタンプを加えたスクリプトの例
while read LINE; do
 echo echo \`date\` copy \"/media/disk-1/MyMusic/Music/$LINE\"
 echo cp -r \"/media/disk-1/MyMusic/Music/$LINE\" /media/disk-2/MyMusic/Music/
 echo date
done

仮想マシンイメージファイルの実サイズ

  • ls -ls [file...]
  • ls -lsh [file...]
  • qemu-img info [filename]

UDF形式のイメージのマウント

  • イメージを dir1 にマウントする例
    • sudo mount -o loop -t udf media.iso dir1
  • Gnomeの書庫マネージャ(file-roller)でUDF形式のイメージを開くと、README.TXTしか見えません。正しく閲覧することができないようです。README.TXTには下記のように書いてありますが、UDFファイルシステムはおそらくサポートされてますのでツールの問題だと思います。
This disc contains a "UDF" file system and requires an operating system
that supports the ISO-13346 "UDF" file system specification.
  • isoイメージの作成例 (2.4GBのDVDメディアの例)
$ time dd if=/dev/sr0  of=media.iso
4618216+0 records in
4618216+0 records out
2364526592 bytes (2.4 GB) copied, 482.761 s, 4.9 MB/s

real 8m2.766s
user 0m2.240s
sys 0m31.362s

Linux KVMのゲストとしてWindows7をインストール

  • インストール途中に、背景とマウスカーソルだけの画面で止まってしまう
    • 再起動ができずに固まったままになっているようです。少し様子を見て、動きがないようであれば仮想マシンマネージャーから Force poweroff で強制停止し、再度起動します。起動後、インストールの続きが始まります。
    • このあと、「再起動後にセットアップを継続する」という表示の後も同様です。
  • 仮想ネットワークインターフェース
    • KVM環境の問題ですが、bridgeの方が簡単です。
  • 仮想ディスプレイ(Virtual Display)
    • Windowsが日本語の場合、キーマップを「ja」で作り直します。
    • 円マークなどの記号が上手く打てるようになります。
  • ディスク使用量
    • インストール直後は5.16GB程です。
  • デバイス
    • ディスクドライブは QEMU HARDDISK ATA Device
    • ディスプレイ アダプターは 標準 VGA グラフィック アダプター
    • ネットワーク アダプターは Realtek RTL8139C+ Fast Ethernet NIC
    • どれも標準のドライバで使うことができます。

CPU温度測定

  • Linuxの場合 (Debian 5.0 Lenny)
    • lm-sensors パッケージをインストール
    • sudo sensors-detect コマンドで設定、YES応答で設定しました。
    • リブート(coretempモジュールのロード)
    • sensors コマンドで確認
~$ sensors
coretemp-isa-0000
Adapter: ISA adapter
Core 0:      +45.0°C  (high = +74.0°C, crit = +100.0°C)  

coretemp-isa-0001
Adapter: ISA adapter
Core 1:      +44.0°C  (high = +74.0°C, crit = +100.0°C)  
  • デスクトップ上でモニタリング
    • sensors-applet パッケージをインストール
    • パネルを右クリックし「パネルへ追加」で Hardware Sensors Monitor を追加します。もし一覧に見当たらない場合は再ログインします。
    • 温度表示、グラフ表示などの設定ができます。
    • 多くのセンサーが表示されてしまう場合は、右クリックのPreferencesで設定して減らしましょう。
    • GNOME Sensors Applet http://sensors-applet.sourceforge.net/
  • Windowsの場合

sshでのログイン先ホストのキー更新

  • 現在のキーの確認
    • ssh-keygen -F [hostname or IPアドレス]
    • 登録ファイル .ssh/known_hosts は暗号化されているため、該当するホストのキーが存在するかどうか、コマンドで確認します。
  • 現在のキーの削除
    • ssh-keygen -R [hostname or IPアドレス]
    • 削除後は新しいホストとしてsshできます。

bigmemカーネル(3GB以上のメモリーを使う)

  • インストール例
    • $ sudo aptitude install linux-image-2.6.26-2-686-bigmem
  • 仮想マシンにKVMを使用しているなら、普通のbigmemを使います。openvz、vserver、xenは別の仮想マシンソフトウェアです。
~$ aptitude search linux-image-2.6.26-2
p   linux-image-2.6.26-2-486                                
i A linux-image-2.6.26-2-686                                
i   linux-image-2.6.26-2-686-bigmem                         
p   linux-image-2.6.26-2-amd64                              
p   linux-image-2.6.26-2-openvz-686
p   linux-image-2.6.26-2-vserver-686
p   linux-image-2.6.26-2-vserver-686-bigmem
p   linux-image-2.6.26-2-xen-686

nautilus-share と samba の設定

  • Debia(Lenny)で確認
  • nautilus-shareを使うと、nautilus上で右クリックしてSMB共有フォルダを作成できます。
  • nautilus-shareをインストールしたのち、sambaサーバーの設定を行います。
    • smbpasswd を使ってパスワードを設定
$ sudo smbpasswd -a user名
[sudo] password for xxx: 
New SMB password:
Retype new SMB password:
  • デフォルトの設定ではユーザのホームフォルダも読み取り専用ですが共有されますので、見せたくない場合は /etc/samba/smb.conf の [homes] セクションをコメントアウトして samba を再起動します。
    • コメントアウト箇所と再起動
;[homes]
;   comment = Home Directories
;   browseable = no
;   read only = yes
;   create mask = 0700
;   directory mask = 0700
;   valid users = %S
$ sudo sh /etc/init.d/samba restart
Stopping Samba daemons: nmbd smbd.
Starting Samba daemons: nmbd smbd.
  • 自分を sambashare グループに追加
    • 下記のエラーへの対応
    • 'net usershare' returned error 255: net usershare: cannot open usershare directory /var/lib/samba/usershares. Error 許可がありません
  • Windowsのエクスプローラーでアクセスするには、アドレス欄に「\\IPアドレス\共有名」を入力し(バックスラッシュは円マークになる)、ユーザ名はUNIXユーザ名を使います。

チルトホイール(左右のスクロール)

  • evdevドライバを使用するとチルトホイールが使えるようになります。左右のスクロールが可能です。Debian(Lenny)で確認しました。Ubuntuでは何も設定しなくても使えます。
  • /etc/X11/xorg.conf の ServerLayout と InputDevice セクションを編集します。InputDevice セクションだけでもチルトホイールが使えるようになりますが、複数のマウスを同時に使う場合は ServerLayout セクションも編集した方がよいと思います。
  • 下記の例では ThinkPad のポインター(トラックポイントとタッチパッド)とマウスの両方が使用できます。Configured Mouse の方は元々既定で書かれてある設定で、ThinkPad のポインター用の設定です。デスクトップ PC であれば有線の USB マウスの設定です。ワイヤレスマウスを使う場合は電池切れに備えて、有線のマウスがいつでも挿せば使えるよう、このような設定にする方がよいと思います。マウスが1つの場合は不要です。
  • InputDevice セクションの Device は /proc/bus/input/devices ファイルを見て調べます。Driver は evdev です。
  • 他の Option は man evdev で確認できます。マウスは Pathオプションか Deviceオプションのどちらかを指定します。
  • 例1 (マウスに関係ある部分のみ)
Section "ServerLayout"
 Identifier     "aticonfig Layout"
 Screen      0  "aticonfig-Screen[0]-0" 0 0
 InputDevice    "microsoft-mouse"
EndSection

Section "InputDevice"
 Identifier "Configured Mouse"
 Driver  "mouse"
EndSection

Section "InputDevice"
 Identifier      "microsoft-mouse"
 Driver          "evdev"
# Option          "Path" "/dev/input/by-path/pci-0000:00:1d.0-usb-0:2:1.1-mouse"
 Option          "Device"        "/dev/input/event2"
# Option          "CorePointer"
EndSection
  • 例2、ServerLayoutセクションを新たに作る場合、出力デバイスと入力デバイスをそれぞれ一つ以上指定する必要があるため、出力デバイスの方も、Screenセクションを参照して記述しておきます。
Section "ServerLayout"
 Identifier "Default Layout"
 Screen 0 "Default Screen" 0 0
 InputDevice "Logitech-mouse"
EndSection

Section "InputDevice"
 Identifier "Configured Mouse"
 Driver  "mouse"
EndSection

Section "InputDevice"
 Identifier      "Logitech-mouse"
 Driver          "evdev"
 Option          "Path" "/dev/input/by-path/pci-0000:00:1d.1-usb-0:2:1.0-event-mouse"
# Option          "Device"        "/dev/input/event5"
# Option          "CorePointer"
EndSection

Section "Screen"
 Identifier "Default Screen"
 Monitor  "Configured Monitor"
EndSection
  • xevで確認したところ、上下のスクロールは button 4 と 5、左右のスクロールは button 6 と 7、左右から戻りは button 11 と 12 になってました。
  • なお、ServerLayout セクションを編集しない場合、左右スクロールが使えるようにするには Option "CorePointer" を付けておく必要がありました。付けない場合、チルトホイールの動作が左右のスクロールにならず、戻るボタン(ブラウザだと前のページに戻る)になります。ただし、Option "CorePointer" を指定した場合、マウスは1つしか使えなくなる状態になるかも知れません。
  • 参考

LVMパーティションのマウント

  • USBハードディスクケースに入っているディスクのLVMパーティションをマウントする手順です。
  • USBハードディスクケースを接続し、pvscan、vgscan、lvscanで情報を確認する。下記の場合、pvscanでVG名が"vg00"であることがわかります。何番目のパーティションであってもスキャンしてくれます。
# pvscan
  PV /dev/sdb3   VG vg00   lvm2 [16.76 GB / 0    free]
  Total: 1 [16.76 GB] / in use: 1 [16.76 GB] / in no VG: 0 [0   ]
# vgscan
  Reading all physical volumes.  This may take a while...
  Found volume group "vg00" using metadata type lvm2
# lvscan
  ACTIVE            '/dev/vg00/lv00' [6.00 GB] inherit
  ACTIVE            '/dev/vg00/lv01' [6.00 GB] inherit
  ACTIVE            '/dev/vg00/lv02' [4.76 GB] inherit
  • vgchangeコマンドでアクティブにします。-a(--available)オプションで引数yを与えます。
# vgchange -a y
  3 logical volume(s) in volume group "vg00" now active
  • ボリュームを確認し、マウントします。
# ls /dev/vg00
lv00  lv01  lv02
# mkdir usbvg00lv00
# mkdir usbvg00lv01
# mkdir usbvg00lv02
# mount /dev/vg00/lv00 usbvg00lv00
# mount /dev/vg00/lv01 usbvg00lv01
# mount /dev/vg00/lv02 usbvg00lv02
  • 上記の例はDebian(lenny)で確認しました。
  • 起動中のOSでLVMを使用していてVGの名前が重複する場合は、ライブCDでブートするか、vgrenameコマンドで名前を変更すればよいそうです。LVM作成時にデフォルトの名前を使うと重複するでしょうから、VG名は変えておいた方がよいかもしれませんね。

日本語変換で半角英数入力からひらがな入力に戻す

  • シフト+無変換で戻ります。
    • ひらがな入力から半角英数入力、その逆がこのキーで可能です。
    • 何かのはずみで半角英数入力になってしまい、言語バーをマウス操作して戻していたので、キー操作が知りたかったのです。

topコマンド

  • h ヘルプ
  • a, b, c, d, e, f ・・・ 並び替え
  • u 指定ユーザのプロセスを表示
  • z カラー表示
  • B 数値の太字表示
  • W 設定の書き込み
  • c プロセスをフルパスで表示
  • 1 CPU平均/各CPU情報の切り替え
  • A マルチ表示
  • k プロセスを終了させる(kill)
  • バッチモード
    • top -b -n 1 ・・・1回だけ表示して終了
    • top -b -c -n 1 ・・・フルパスで1回だけ表示して終了
    • psコマンドとの比較(既定の設定での比較)
========
 ps -ef
========
UID        PID  PPID  C STIME TTY          TIME CMD
xxxxxxx  17789     1  0  2009 ?        01:44:26 /usr/lib/iceweasel/firefox-bin -a iceweasel
========
 ps aux
========
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
xxxxxxx  17789  0.6  4.6 246956 143900 ?       Sl    2009 104:26 /usr/lib/iceweasel/firefox-bin -a iceweasel
================
 top -b -c -n 1
================
top - 14:17:47 up 29 days,  4:31,  3 users,  load average: 0.04, 0.08, 0.09
Tasks: 126 total,   1 running, 124 sleeping,   0 stopped,   1 zombie
Cpu(s):  0.3%us,  0.0%sy,  0.0%ni, 99.6%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   3098464k total,  1756076k used,  1342388k free,   227948k buffers
Swap:  1992020k total,        0k used,  1992020k free,   597272k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND    
17789 xxxxxxx   20   0  241m 140m  29m S    0  4.6 104:26.76 /usr/lib/iceweasel/firefox-bin -a iceweasel

findコマンド

  • 最近更新されたファイルの検索
    • find . -type f -mmin -10 ・・・-10は10分以内、+10だと10分以上
  • 古いファイルの検索
    • find . -type f -mtime +100 ・・・100日以上
    • find . -type f -mtime 100 ・・・100日前
    • find . -mtime +200 -mtime -250 ・・・200日以上250日以内

マウントオプションnoatime、relatime

  • SSDの寿命を延ばすためnoatimeオプションがよく使われます。
  • ディスクI/Oを向上させるため、SSDでないマシンにも有効そうですが、性能を維持し、実用的な機能に絞ったrelatimeオプションの方がよいとされます。
  • FedoraやUbuntuの最近のバージョンはrelatimeオプション有効でビルドされているそうです。
  • CentOS 5.3のルートファイルシステム(LVM, ext3)にrelatimeオプションを付けてブートしたところ、read-only(読み取り専用)になってしまいました。実行マシンはXenゲストです。
    • rwで再マウントし、/etc/fstabからrelatimeオプションを削除
# mount
/dev/mapper/VolGroup00-LogVol00 on / type ext3 (rw)
proc on /proc type proc (rw)

mount: warning /etc/mtab is not writable (e.g. read-only filesystem).
       It's possible that information reported by mount(8) is not
       up to date. For actual information about system mount points
       check the /proc/mounts file.

# mount -n -o remount,rw -t ext3 /dev/mapper/VolGroup00-LogVol00 /
# vi /etc/fstab
# cat /etc/fstab
/dev/VolGroup00/LogVol00 /                       ext3    defaults        1 1
LABEL=/boot             /boot                   ext3    defaults        1 2
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0
/dev/VolGroup00/LogVol01 swap                    swap    defaults        0 0

# reboot

$ mount
/dev/mapper/VolGroup00-LogVol00 on / type ext3 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
/dev/xvda1 on /boot type ext3 (rw)
tmpfs on /dev/shm type tmpfs (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)

$ df
Filesystem           1K-ブロック    使用   使用可 使用% マウント位置
/dev/mapper/VolGroup00-LogVol00
                       6792608   2321796   4120196  37% /
/dev/xvda1              101086     27829     68038  30% /boot
tmpfs                   786520         0    786520   0% /dev/shm

Linux からディスクラベル(ボリューム名)を設定

  • /dev/hda6 に DVNDISC というラベル名を付ける例(どちらでもOK)
    • e2label /dev/hda6 DVMDISC
    • tune2fs -L DVMDISC /dev/hda6
  • 下記のようなエラーになったら mke2fs で修復する
~# e2label /dev/hda6 DVMDISC
e2label: Bad magic number in super-block while trying to open /dev/hda6
Couldn't find valid filesystem superblock.

~# tune2fs -L DVMDISC /dev/hda6
tune2fs 1.41.3 (12-Oct-2008)
tune2fs: Bad magic number in super-block while trying to open /dev/hda6
Couldn't find valid filesystem superblock.

~# mke2fs -S /dev/hda6
mke2fs 1.41.3 (12-Oct-2008)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
70416 inodes, 281602 blocks
14080 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=289406976
9 block groups
32768 blocks per group, 32768 fragments per group
7824 inodes per group
Superblock backups stored on blocks: 
 32768, 98304, 163840, 229376

Writing superblocks and filesystem accounting information: done

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

~# e2label /dev/hda6 DVMDISC

~# e2label /dev/hda6
DVMDISC

ディストリビューションのバージョン確認

  • Debian
    • cat /etc/debian_version
  • Ubuntu
    • cat /etc/lsb-release
  • CentOS
    • cat /etc/redhat-release

圧縮アーカイブと展開(解凍)

  • gzip形式の展開(解凍)
    • tar xzf [xxxxx.tar.gz]
    • tar xzvf [xxxxx.tar.gz] ※ファイル名表示しながら展開
    • gunzip [xxxxx.gz]
    • gunzip -c [xxxxx.gz] > xxxxx ※元の圧縮ファイル(xxxxx.gz)が残る
  • gzip形式の圧縮アーカイブ
    • gunzip [xxxxx.gz] files
    • tar czf [xxxxx.tar.gz] [dir]
    • tar czvf [xxxxx.tar.gz] [dir] ※ファイル名表示しながら圧縮アーカイブ
  • compress形式の場合はtarは大文字のZ
  • zip形式の展開(解凍)
    • unzip [xxxxx.zip]
  • zip形式の圧縮アーカイブ
    • zip -r [xxxxx.zip] files

ISOイメージ作成

スクリーンショットの保存(gnome-screenshot)の画面が伸びる

  • Gnomeで「スクリーンショットの取得」(PrtScreenキーでも起動)を使うとき、スクリーンショットの保存の画面が横長に伸びすぎてしまうときがある。
  • これは保存するフォルダに記憶されているフォルダ名に長い文字列がある場合に起こる。日本語名フォルダはエンコードされて想像以上に長くなっている。
  • [場所]-[コンピュータ]メニューなどでNautilusを起動し、ツールバー[場所]-[ブックマークの編集]で長い文字列を削除すれば、画面も自動的に相応の長さになる。

Wake On LAN (WOL) リモートでマシンの電源ON

  • wakeonlanパッケージ
    • root権限で実行する必要がある。一般ユーザ実行しても同じ応答メッセージだが上手くいかない。
$ sudo wakeonlan 01:02:03:04:05:06
Sending magic packet to 255.255.255.255:9 with 01:02:03:04:05:06
  • etherwakeパッケージ
    • これもroot権限で実行する必要がある。
$ /usr/sbin/etherwake 01:02:03:04:05:06
etherwake: This program must be run as root.
$ sudo /usr/sbin/etherwake 01:02:03:04:05:06
$

BOM (Byte Order Mark) を消す方法

  • Linux環境では viエディタが便利。Windows環境ではBOM付与・削除機能のあるテキストエディタを使うこと。
  • vi
    • ":set nobomb" で削除
    • ":set bomb" で付与
  • SCiTE
    • "File - Encoding - UTF-8" で削除
    • "File - Encoding - UTF-8 with BOM" で付与
  • gedit, Leafpad, Medit, TEA
    • 新規作成時はBOM無しで保存される。viやSCiTEでも同様にBOM無しが既定。
    • BOM付きファイルを別名保存した際はBOM付きのまま保存される。BOMを削除する方法は不明。
  • Eclipse で使う各エディタについては、大抵はBOM無しだが、BOM付きで保存するものもある。
  • サクラエディタ(Windows)
    • 名前をつけて保存の際にBOM有り無し指定
  • メモ帳(Winodwsのnotepad)
    • 名前をつけて保存の際に UTF-8, Unicode, Unicode big endian を選択するとすべてBOM付きで保存される。ANSI(S-JIS)ではBOMは無い。

Firefox 検索結果を新規タブで開く

  • Alt + Enter ・・・初期設定(false)の場合には新規タブで開く。true では逆に。
  • 設定
    • about:config → browser.search.openintab
    • false → 検索結果を現在のタブに表示
    • true → 検索結果を新規タブで開く

X フォワーディング

  • Xオプションを使う
    • ssh -X [IP address] -l [username]
  • リモートで起動したGUIアプリケーションがローカルに表示される。
  • ローカルがWindowsクライアントの場合はCygwinのXなどを入れておき、Xオプション相当のものとして、TeraTermのSSH転送機能を有効にして接続する。

コマンドラインでの仮想マシン管理

  • virsh (下記以外にたくさん機能あり)
    • sudo virsh list
    • sudo virsh list --all
    • sudo virsh dominfo [domain-id] (UUID、CPU数、メモリ割当など表示)
    • sudo virsh dumpxml [domain-id] (設定ファイルを表示)
    • sudo virsh start [domain-id]
    • sudo virsh shutdown [domain-id]
    • sudo virsh destroy [domain-id] (強制終了、強制電源OFF)
    • sudo virsh console [domain-id] (Ctrl + ] で終了できる)
    • sudo virsh --connect qemu:///system (virshプロンプト内で操作できる)
    • sudo virsh --connect qemu:///session
    • sudo virsh --connect xen:///
  • 仮想ネットワーク・インターフェースの起動(たまにダウンしたときの対処)
    • sudo virsh net-start default
    • 仮想マシン起動時のエラーメッセージ
Traceback (most recent call last):
  File "/usr/share/virt-manager/virtManager/engine.py", line 531, in run_domain
    vm.startup()
  File "/usr/share/virt-manager/virtManager/domain.py", line 380, in startup
    self.vm.create()
  File "/usr/lib/python2.5/site-packages/libvirt.py", line 262, in create
    if ret == -1: raise libvirtError ('virDomainCreate() failed', dom=self)
libvirtError: internal error Failed to add tap interface 'vnet%d' to bridge 'virbr0' : No such device
  • 仮想ネットワーク・インターフェースの起動例
$ sudo virsh net-list --all
Name                 State      Autostart 
-----------------------------------------
default              inactive no

$ sudo virsh net-start default
Network default started

$ sudo ifconfig virbr0
virbr0    Link encap:イーサネット  ハードウェアアドレス xx:xx:xx:xx:xx:xx 
          inetアドレス:192.168.122.1 ブロードキャスト:192.168.122.255  マスク:255.255.255.0
(以下略)

仮想マシンマネージャー(virt-manager)のキーマップ

  • Display設定のkeymap設定を "en-us" から "ja"に変更する。
    • 仮想マシンマネージャーの [編集]-[Machine Details...] を開く
    • [ハードウェア]タブのDisplay設定を確認する。"en-us" になっている。
    • Display設定を一旦削除する。
    • [Add Hardware]ボタンを押し"Graphics device"を選択して進む。
    • Keymap の"Same as host"チェックを外し、Other欄に"ja"と入力する。
    • 次の画面で完了。
  • 設定可能な Keymap は /usr/share/qemu/keymaps で確認できる。

initramfs プロンプトから抜け出るには

  • poweroff コマンドでシャットダウンできる。(シングルモードのCtrl + D や、xenコンソールから抜ける Ctrl + ] とは少し対処が異なる)
  • initramfs プロンプトの状態でlsコマンドなど基本的なコマンドの使用が可能。その他binの下を見てみるとよい。
  • Linux起動後、(initramfs)というプロンプトでブートが止まることがある。仮想マシンのゲストOSの起動などで見ることもある。

拡張パーティションのサイズ拡大

  • cfdisk
    • 基本パーティションが4つ未満であればどのツールでもよいが、基本パーティションが3つ、拡張パーティションが1つ作成済みである場合はcfdiskが便利。
  • 例、空きの区域を拡張パーティションしたいとき
┌──┬──┬──┬──┬──┐
│基本│基本│拡張│(空)│基本│
└──┴──┴──┴──┴──┘
  • 拡張パーティションを作成する際に、全てを幾つかの論理パーティションにしなかった場合(下図)、何かの際に拡張パーティションが小さくなり、上図のようになってしまうことがある。
このように空きがあると上のようになる可能性がある。
┌──┬──┬───────┬──┐
│基本│基本│・・拡張・・・│基本│
│・・│・・│┌──┬──┐│・・│
│・・│・・││論理│(空)││・・│
└──┴──┴┴──┴──┴┴──┘
一旦全て論理パーティションにしてしまうとよい。パーティション編集中は自在にできるので。
┌──┬──┬───────┬──┐
│基本│基本│・・拡張・・・│基本│
│・・│・・│┌──┬──┐│・・│
│・・│・・││論理│論理││・・│
└──┴──┴┴──┴──┴┴──┘

fat32パーティションのマウント

  • Debianで一般ユーザでマウントできるようにするにはdiskグループにユーザを追加する
    • sudo usermod -G disk [username]
  • マウント先のディレクトリを作成する
    • sudo mkdir /sda3_fat32
  • /etc/fstabを編集する、以下のような行を追加
    • /dev/sda3 /sda3_fat32 vfat noauto,codepage=932,iocharset=utf8,user 0 0
    • 起動時に自動マウントされる場合、userオプションだけでは一般ユーザは書き込みできないので、noautoオプションを付けて、使用する際にマウントするようにした。Gnomeであれば[場所]-[コンピュータ]からデバイスをクリックするだけでマウントできる。
    • umask=000とrwオプションを付ければ起動時の自動マウントされても一般ユーザが書き込みできるようだ。
    • /dev/sda3 /sda3_fat32 vfat codepage=932,iocharset=utf8,user 0 0
    • mountコマンドだけでマウントしようとすると"mount: only root can do that"になり、sudoで実行しても"Usage: mount -V ....."が流れる
  • マウントする
    • mount /sda3_fat32

Windowsのサイズ

Windows VistaからWindows7 betaへの移行

UbuntuライブCDを使ってのGRUB起動ディスク作成

Windows用ツール

Firefoxアドオン

  • GMarks ・・・Google Bookmark 表示
  • Google Toolbar for Firefox ・・・Google のサービス用のツールバー
  • Screengrab ・・・スクリーンキャプチャ、他にFireShot、Abduction!(3.5未対応)など
  • Video DownloadHelper ・・・YouTubeなどの動画ダウンロード
  • Flashblock ・・・Flashコンテンツを自動再生させない(ただしFirefox自体がクラッシュする原因になっているかも)
  • SQLite Optimizer ・・・Firefox内で使われるDBを最適化し起動高速化
  • Show IP ・・・接続先のIPアドレスを表示(IPv6サイト利用の場合便利)
  • Prism for Firefox
  • Personas for Firefox
  • qtl
  • Extended Statusbar
  • DownThemAll!
  • Fireboot ・・・アドオンではなく別のプログラムですが、拡張機能に埋め込まれている言語ファイルを削ることにより起動高速化を図るもの。効果が大きかったです。http://aoproj.web.fc2.com/fireboot/

Tunderbird のマスターパスワードリセット方法

  • Master password - MozillaZine Knowledge Base http://kb.mozillazine.org/Master_password
  • ツール → エラーコンソールを開く
  • コードの欄に以下のコードを入力し、コードの評価を押す
    • openDialog("chrome://pippki/content/resetpassword.xul")

ubuntu 8.10 で scim が起動しない問題

KVM 導入前の確認

  • egrep '^flags.*(vmx|svm)' /proc/cpuinfo
  • AMD プロセッサでは Linux 2.6.16 以降
  • Intel プロセッサでは Linux 2.6.15 以降

Ubuntu で日本語の PDF 文書を読む

Windows Vista の NTLDR を使って Ubuntu を起動する

AbiWord での Microsoft Office Word 文書の MS P ゴシック文字化け

  • VL PGothic にする。
    • マウス選択や Ctrl+A で化けた部分全体を選択し、AbiWord のフォントを VL PGothic にする。
    • VL PGothic の他、VL Gothic 、Sazanami Gothic 、Sazanami Mincho でも文字化けせずに読むことができる。
    • MS P ゴシックが文字化けしない、何もしなくても読める場合も多い。
  • Fedora 10 の abiword 2.6.4 にて確認。Word 2003文書。
  • OpenOffice はやや重たいので AbiWord で読むことができれば便利。

Vistaでの既定のプログラム設定

年賀状作成と印刷

  • 原画の作成
    • 後述
  • 印刷用ファイルの形式
    • 編集した画像をGIFファイルで保存し、それを印刷する。
    • GIFやPNGは何も描いてないところを透明部分として保存できるので、印刷時にインクの無駄がない。JPEGだと白色の背景もわざわざ白色で印刷される。
  • 印刷の実行
    • 環境によるかも知れないが、下記のようにすると上手くできる。
  1. 画像ファイルを開く(Windowsなら「Windows画像とFAXビューア」で開く)
  2. 印刷操作をする(写真の印刷ウィザードが開く、次へボタン押す)
  3. 印刷操作つづき(画像の選択で印刷したい画像のみにチェックがついていること確認し、次へボタン押す)
  4. 印刷操作つづき(印刷オプションで使用するプリンタを確認し、印刷の基本設定ボタンを押す)
  5. プリンタのプロパティが開き、用紙設定タブで用紙サイズをA4サイズでなく、「フォトカード用紙(102mm×152mm)」に変更する。OKボタンでプロパティを閉じる。次へボタンを押す。
    ※ハガキ用紙(100mm×148mm)にした場合、実際の印刷が小さくなって上手く合わない。印刷のユーティリティが用紙に合わせて適宜伸張させるが、右と下に余白がないとハガキからはみ出してしまう。用紙をハガキ用紙にするならば原画を大きくすればよいかも知れないが試したことはない。
  6. 印刷操作つづき(レイアウトの選択の"利用可能なレイアウト"欄で「フルページ写真プリント」の方を選択する。
  7. 印刷プレビューでは右上に寄るが、これで上手く収まる。
  • 原画の作成
    • GIMPが多機能の便利。多機能であるため操作を覚えるのに慣れが必要。ExcelでもOpenOffice Drawでもよい。写真の合成なら描画ソフトだけでもよい。
    • 自分で絵を描いて印刷したいならば、紙に描いてスキャナーで取り込むのが早い。手書き風の絵は作画ソフトだと相当に慣れないと上手く描けない。マウスだと難しいのでタッチペン等の道具も必要なのではないか。機械的なデザインならばよいかも知れないけど。
    • 原画サイズは100対148の割合にする。
    • 100×148ミリメートル(約283×420ピクセル)だと葉書サイズと同じだが、画像品質の点では数倍で作成した方がよい。1000×1480ピクセルにするなど。
    • 原画は右上に寄せて、下と左は、印刷後のイメージで1cmから1.5cm分くらい余白をとる。
┌──────┐
│+--------+  │
│|        |  │
│|   原   |余│
│|   画   |白│
│|        |  │
│+--------+  │
│   余白     │
└──────┘
  • 原画ファイルの保存
    • 原画を作成した描画ソフト独自の形式で保存し、そのソフトで印刷してもよい。
    • 描画ソフトに依存したくない場合は画像ファイル形式で保存するとよい。
    • 上述の通り、画像ファイルの形式は GIF や PNG など透明部分が保存できる形式がよい。色の部分だけしか印刷しないので、印刷が速くインクの無駄もない。JPEG だと無地の部分も印刷されるのでインクが勿体無い。白い背景だったら、わざわざ白色でベタ塗りされる。

iPod (Touch Wheel)の操作方法

  • iPod をディスクモードにする http://support.apple.com/kb/HT1363?viewlocale=ja_JP
    • クリックホイールの付いていない、以前の iPod モデルの場合
    • 1. ホールドスイッチをオンにしてからオフにする。
    • 2. 再生/一時停止ボタンとメニューボタンを同時に押す。
    • 3. アップルロゴが表示されたらボタンを放す。iPod がリセットされる。音楽とデータファイル以外のカスタマイズ設定は失われる場合があるとのこと。)
    • 4. Apple ロゴが表示されたら、すぐに前へ/巻き戻しボタンと次へ/早送りボタンを、ディスクモード画面が表示されるまで押し続ける。
    • 5. iPod をコンピュータに接続します。iPod の画面が変わり、「Do not disconnect」と表示される。
    • 通常の動作状態に戻すには、iPod のリセットが必要。

rpmとyumによるパッケージ操作

yumの全体設定とリポジトリ設定

  • /etc/yum.conf
  • キャッシュディレクトリの設定
    • リポジトリ情報も記述可能であるが通常は下記のrepoファイルに別出しする。
    • /etc/yum.repos.d/CentOS-Base.repo
    • enabled=1のリポジトリは有効、0は通常は無効(オプション指定すると有効)

パッケージ情報検索

  • rpm -q パッケージ名 (インストールされているパッケージ名のみ出力)
  • rpm -qi パッケージ名 (インストール情報が出力)
  • rpm -ql パッケージ名 (インストールされているファイル名が出力、大抵たくさん出力される)
  • rpm -qf ファイル名 (ファイルを含むパッケージ名が出力)
  • yum list パッケージ名
  • yum list | grepパッケージ名の一部
  • yum --enablerepo=リポジトリ名 list
    • enable=1のリポジトリも含めすべて出力される。
  • yum --enablerepo=リポジトリ名 list | grep リポジトリ名
    • 絞り込む場合の例。ただし、インストール済みは“installed”となる。
  • yum --enablerepo=リポジトリ名 info パッケージ名
    • 絞り込む場合の例。infoの場合、絞り込まないとインストール済み、enable=1含めすべての情報が出力され大変な量になる。

パッケージのインストール、削除

  • パッケージインストール
    • yum install パッケージ名
    • yum -y install パッケージ名
    • yum --enablerepo=リポジトリ名 install パッケージ名
  • パッケージ情報更新
    • yum check-update (yumコマンドでの更新可能パッケージの検索)
  • パッケージ更新
    • yum -y update
    • yum update パッケージ名
    • yum --enablerepo=リポジトリ名 update パッケージ名
  • パッケージ削除
    • yum remove パッケージ名
  • パッケージ個別管理(rpmコマンド)
    • rpm --import 公開鍵ファイル名 (GPG公開鍵インストール)
    • rpm -K パッケージファイル名 (パッケージ署名の検証)
    • rpm -ivh パッケージファイル名 (パッケージインストール)
    • rpm -Uvh パッケージファイル名 (パッケージ更新)
    • rpm -e パッケージファイル名 (パッケージ削除)

ディスク容量確保

使用量確認

  • du -csh ./*
  • du -csh /home /var /opt ...
    • 合計がいらない場合は -sh でよい。

パッケージのキャッシュ削除

CentOS、Fedora、RedHat
  • du -h /var/cache/yum | tail -1
    • 事前に容量を確認する。
  • yum clean all
    • "yum clean packages"だけでもずいぶん減る。
Debian
  • apt-get clean
  • apt-get autoclean

ファイルの圧縮

  • tar cvzf [圧縮後のファイル名(.tar.gz)] [圧縮前のファイル名]

Puppy Linux 2.16

  • CFカードへのインストール
    • メニュー、セットアップ、Puppy ユニバーサルインストーラ
    • CFにコピーされたもの
vmlinuz
syslinux.cfg
IDEFLASH
initrd.gz
pup_216.sfs
zdrv_216.sfs
  • syslinux.cfg
default vmlinuz root=/dev/ram0 initrd=initrd.gz ide=nodma PMEDIA=ideflash
  • isolinux.cfg
default puppy
display boot.msg
prompt 1
label puppy
kernel vmlinuz
append root=/dev/ram0 initrd=initrd.gz pmedia=cd
timeout 50

hostsファイルでの別名(エイリアス)設定

  • /etc/hostsで別名を設定する例。
    • 127.0.0.1 localhost.localdomain localhost
      ::1 computer1 www.example.org pop.example.org
    • 127.0.0.1 localhost alias1 alias2

Excelで1行置きにセル網掛け

  1. セル(複数セルでもOK)を選択し[書式]→[条件付き書式]
  2. 条件1を「数式が」にセットする。
  3. 数式を「=MOD(CELL("row",A1),2)=1」とし(A1でなくてもよい)、書式でセル網掛けにする。

iTunes Music フォルダの場所にネットワークドライブをUNC pathで設定する方法

  • iTunes Music フォルダをローカルPCにせず、Landiskなどのネットワーク・ストレージを使いたい場合にどのように設定すればよいか。
  • ドライブ名を割り当てれば設定できるが、ドライブ名で制御する方法はあまり使いたくない。「\\サーバ名\資源」の形式で設定したい。
  • 方法
    • Landiskを起動したあと、エクスプローラでドライブ名を使わずに接続する。ツール-ネットワークドライブの割り当ての際にドライブ名をなしにして接続する。
    • するとLandiskのdiskがネットワークのツリーの直下に配置される。
    • この状態で、iTunesの[編集]-[設定]-[詳細]-[一般]の[変更]ボタンで選択する。

Windows起動時トラブル原因切り分け

Windows XP (SP2) 修復インストール

sendmailログから時間帯別通数を集計する(csh)

#!/bin/csh
set MAILLOG=$1
set TMP="./countin.tmp"
set HH=(00: 01: 02: 03: 04: 05: 06: 07: 08: 09: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23:)
zcat $MAILLOG | head -1 | cut -b1-23
#cat $MAILLOG | head -1 | cut -b1-23
foreach i ($HH)
  echo -n "$i "
  echo `zcat $MAILLOG | grep ": from=" | grep " $i" | wc -l`
  #echo `cat $MAILLOG | grep ": from=" | grep " $i" | wc -l`
  #echo `gzcat $MAILLOG | grep ": from=" | grep " $i" | grep -v "relay=localhost" | wc -l`
end
2005-11-28

DOSシェル(FOR)

  • For %F in (*.txt) do type %F
  • For /L %%N in (1,1,9) do echo %%N
  • For /F "skip=4 Eol=J token s=1
2005-11-28

2005-12-01

  • コマンドプロンプトの初期フォルダ
    • デフォルトは%HOMEDRIVE%%HOMEPATH% (C:\Documents and Settings\[userid])
    • コマンドプロンプトのアイコンのプロパティを開き「作業フォルダ(S):」にて変更可能。
  • GunPGコマンド
    • alice% gpg --output doc.gpg --encrypt --recipient blake@cyb.org doc
    • alice% gpg -e -r blake@cyb.org doc (→"doc.gpg"が作成される)
    • blake% gpg --output doc --decrypt doc.gpg
    • blake% gpg -d doc.gpg (→標準出力)
    • gpg --list-keys
    • gpg --fingerprint blake@cyb.org
    • gpg -a --export blake@cyb.org (公開鍵)
  • 不良ブロック修復
    1. システムログ(イベントビューア)にて下記のイベントが出る。
      • エラー、ソース:atapi、イベント ID:9、説明:デバイス xxx はタイムアウト期間内に応答しませんでした。
      • 警告、イベント ソース:Disk、イベント ID:51、説明:ページング操作中にデバイス xxx 上でエラーが検出されました。
      • エラー、イベント ソース:Disk、イベント ID:7、説明:デバイス xxx に不良ブロックがあります。
    2. 2~3度リブート (Dirtyがあれば修復される)
      • > fsutil dirty query C:
      • ボリューム - C: は Dirty ではありません
    3. chkdsk または[マイ コンピュータ]-[ローカル ディスク]-[プロパティ]-[ツール]タブ-[エラー チェック] (→Cドライブは読み取りチェックのみ)
    4. chkdsk /F /R (→リブート後に実行される。長時間要する。)

2005-12-02

  • whileによるコマンド処理ループ(bash)
$ AA=1
$ while [ $AA = 1 ];do
> date
> sleep 5
> done
Fri Dec  2 16:02:43     2005
Fri Dec  2 16:02:48     2005
(Ctrl+Cで終了)
1行で書けば
while [ $AA = 1 ];do date; sleep 5; done
  • whileによるコマンド処理ループ(csh)
% set AA=1
% while ($AA == 1 )
? date
? sleep 5
? end
2005年12月02日 (金) 16時06分55秒 JST
2005年12月02日 (金) 16時07分00秒 JST
(Ctrl+Cで終了)
  • コマンド実行時の終了ステータス、返り値
    • sh、bash では「$?」、cshでは「$status」
  • ヘルプとサポートを使ってのシステム情報の取得(Windows XP)
    • [スタート]-[ヘルプとサポート(H)]-[ツール を使ってコンピュータ情報を表示し問題を診断する]-[マイ コンピュータの情報]-[コンピュータに関するシステム情報全般を表示する]にて一覧表示、印刷できる。ブラウザインターフェースである。
    • コントロールパネルや[管理ツール]-[コンピュータの管理]のツールにて細かく採取できるが、これらは一覧性にやや欠け、印刷できない。OSインストール時等は紙で控えておきたい。

2005-12-02

  • forによる値代入コマンド繰り返し処理(bash)
    • 代入したい値をファイル「list」に改行入りで列記する。
$ echo 192.168.0.1 > list
$ echo 192.168.0.2 >> list
$ for i in `cat list` ;do
> echo $i
> done
192.168.0.1
192.168.0.2
("list"のデータが終わると終了)
1行で書けば
for i in `cat list` ;do  echo $i;done
  • foreachによる値代入コマンド繰り返し処理(csh)
    • 代入したい値をファイル「list」に改行入りで列記する。
% echo 192.168.0.1 > list
% echo 192.168.0.2 >> list
% forreach i (`cat list`)
? echo $i
? end 
192.168.0.1
192.168.0.2
("list"のデータが終わると終了)
  • DOSシェルのエラーレベル
    • echo %errorlevel%

2005-12-08

  • 図形の保存
    • Visio等のソフトウェアは起動に時間がかかり、ファイルサイズが大きく、またバージョン互換性に不安がある。GIF、JPEG等で保存すれば軽くなるが文字が読みにくくなる。
    • Windowsの描画命令(GDI命令)をまとめたメタファイルであれば文字もくっきり変換される。拡張子emf、Windows95以前のwmfがある。
    • 画像ファイル形式について(Microsoftサポート情報) http://support.microsoft.com/Default.aspx?scid=kb;ja;320314&x=11&y=14
    • セキュリティ情報、JPCERT/CC Alert 2005-12-29、Microsoft Windows メタファイル処理の脆弱性に関する注意喚起、http://www.jpcert.or.jp/at/2005/at050014.txt

2006-01-11

  • sendmailログにて受信メールをサイズ別に集計をする方法
    • from行の2番目のカンマの「size=xxxx」より数字だけ取り出し、awkで大小評価する。
    • 受信サイズ制限を行っている場合もsendmailログではサイズは記録されます。(spoolで一旦受け記録もされる。)
    • サイズはバイトで記録される。バイトをキロバイト(KB)、メガバイト(MB)に換算する方法は単純に1000を掛ける方法と1024を掛ける方法があるが、WindowsやUNIXのアプリケーションでは1024で換算し表示されてますので後者がよい。Diskサイズなどは前者で計算されているそうです。(40GBディスクは40000MBディスクとなる。)
# cat /var/log/mail.log.0 |grep ": from=" |cut -d',' -f2 |cut -d'=' -f2 > LOG0-A
# cat LOG0-A | awk ' $1 >= 10485760 { print $1}' > LOG0-B

※10485760(10MB)以上15728640(15MB)未満を数える場合
cat LOG0A | awk ' $1 >= 10485760 && $1< 15728640{ print $1}'
  • sendmailのキューを急いで処理する方法
    • 基本的には「/usr/lib/sendmail -q」だが、キュー滞留後、蓄積時間の間は再送できない(too youngエラーとなる)。
    • 通常の運用ではキュー処理デーモンに任せて問題ないが、急ぐ場合には「/usr/lib/sendmail -q -OMinQueueAge=0」にて若いキューを処理する。再送後のキュー蓄積時間を0にしながらキュー処理する。
# /usr/lib/sendmail -q -OMinQueueAge=0
# (プロンプトが返って来ればすぐにコマンドを繰り返すこと可能)
# /usr/lib/sendmail -q -OMinQueueAge=0

2006-01-21

  • LAN内のコンピュータをスキャンする方法 (Debian)
    • ping -b 192.168.0.255
    • arp
    • arp -a
    • arp -vn
  • Wake On Lan (WOL)
    • wakeonlan [MACアドレス]
    • wakeonlan -f [MACアドレスを書いたファイル名]

2006-01-23

  • cygwinへのnkfインストール
    • ダウンロードの際にProxyを使う場合→ "export http_proxy=proxy.xxx.xxx:8080" (".bash_profile"に記述しておいてもよい。cygwinのwgetの場合、環境変数は大文字でなく小文字で指定すること。)
    • インストール
$ wget http://prdownloads.sourceforge.jp/nkf/15302/nkf205.tar.gz
$ tar zvxf nkf205.tar.gz
$ cd nkf205
$ vi config.h
> 50-51行目 (/* デフォルトの出力コード選択 */)
>"#define DEFAULT_CODE_JIS" → "/* #define DEFAULT_CODE_JIS */"
>"/* #define DEFAULT_CODE_SJIS */" → "#define DEFAULT_CODE_SJIS"
$ make
$ make test
$ cp -av nkf.exe /usr/local/bin/
$ mkdir -p /usr/local/man/man1
$ cp -av nkf.1 /usr/local/man/man1/

Webレスポンス測定

  • Bashシェルから利用する例
#!/bin/bash 
COUNTER=0
while [ $COUNTER -lt 2016 ]; do
  echo `date` " " `ruby -rsocket -e 'puts ARGV.map{|url| t=Time::now; s=TCPSocket.new("proxy.xxx.xxx(プロキシー名)", ポート番号); s.puts "GET #{url} HTTP/1.0\r\n\r\n"; s.read; Time::now-t}.join(" ")' http://www.sun.com http://www.yahoo.co.jp http://www.google.com` | tee -a out2.txt
  echo `date` " " The counter is $COUNTER /2016. sleep 895 
#  tail -1 out2.txt
  let COUNTER=COUNTER+1
  sleep 895
done
  • 出力例
Mon Aug 23 09:15:09 2004   1.891 1.718 0.865
Mon Aug 23 09:30:16 2004   1.304 0.949 0.514
Mon Aug 23 09:45:20 2004   1.85 1.724 2.698
Mon Aug 23 10:00:37 2004   2.91 5.306 1.227
Mon Aug 23 10:15:51 2004   1.707 0.879 0.612
--(y:2005-11-30)

コメント

このブログの人気の投稿

systemd-resolveの設定(Ubuntuなどの動的DNS設定)

GRUB起動メニューのタイムアウト時間、起動するOSの変更

Salesforce Trailheadチャレンジメモ(Apex の基礎とデータベース)