コマンド Tips
ファイル操作
指定した容量のダミーファイルを作成する
「coLinux 用の swap ファイルを作成するとき」、「自動バックアップスクリプトのベンチマークに使用するバックアップ対象ダミーファイルを作成するとき」、など、任意のサイズのダミーファイルを作成したい場合は dd コマンドを使用する。
code:bash
dd if=/dev/zero of=DUMMY_FILE bs=1M count=100
→ bs × count (1MB × 100) で 100MB のダミーファイルを作成する。
dd コマンドは、
1. if に指定されたファイルを、
2. bs で指定されたサイズで、
3. count で指定された回数分読み込み、
4. of で指定されたファイルにコピーする
コマンドである。
実際の実行結果は、以下のとおり。
code:terminal
$ dd if=/dev/zero of=dummy bs=1M count=100
100+0 records in
100+0 records out
104857600 bytes (105 MB) copied, 0.155313 seconds, 675 MB/s
$ ls -lh dummy
-rw-rw-r-- 1 sunone sunone 100M 5月 31 01:27 dummy
if に /dev/zero を指定しているので、中身が全てヌルキャラクタ (ASCII の 0x00 ) で 100MB(1MB×100) のダミーファイルが作成される。 複数のファイルをまとめてリネームする
複数ファイルの拡張子を一括変換したいときなど、複数ファイルのファイル名の一部を一括して変更したい場合は、
mv コマンドではなく rename コマンドを使用する。
code:bash
rename FROM_STRING TO_STRING TARGET_FILE
→ 対象となるファイル (TARGET_FILE) の FROM_STRING に該当する部分を TO_STRING に置き換えてリネームする。
code:terminal
$ ls
bar.htm foo.htm fuga.htm hoge.htm
$ rename .htm .html *.htm
$ ls
bar.html foo.html fuga.html hoge.html
diffコマンドに一時ファイルを作らずにコマンドの実行結果を渡す
diff コマンドは引数にファイル以外を指定することはできないため、
code:bash
# これはできない
diff command1 command2
のように、コマンドの実行結果を直接渡すことはできない。
通常、この command1 と command2 の実行結果を diff コマンドで比較するには、一時ファイルに各コマンドの実行結果を出力し、その一時ファイルを diff コマンドで比較することになる。
だが、プロセス置換を使用することで、一時ファイルを作成せずに、コマンドの実行結果を直接 diff コマンドに渡すことができる。
code:bash
diff <(command1) <(command2)
プロセス
プロセスをツリー形式で表示する
プロセスツリー全体を表示する
プロセスの親子関係をわかりやすく表示するには pstree コマンドを使用する。
code:bash
pstree -anpHプロセスID
→ pstree コマンドに anpH オプションと強調表示したいプロセスID(PID) をスペースなしで指定する。
pstree コマンドは実行中のプロセスの親子関係をツリー構造で表示するコマンドである。
特定のプロセスを強調表示したい場合は H オプションと共に対象のプロセスID を指定する。強調表示が不要な場合は、H オプションとプロセスID は不要となる。
各オプションの詳細は以下のとおり。
a: コマンドラインの引数を表示する。
n: PID でソートする。
p: PID を表示する。
h: カレントプロセスとその先祖のプロセスを強調表示する。
HプロセスID: 指定した PID のプロセスを強調表示する。
code:terminal
$ pstree -anph
init,1
┠tq(migration/0,2)
┠tq(ksoftirqd/0,3)
┠tq(watchdog/0,4)
┠tq(events/0,5)
┠tq(khelper,6)
┠tq(kthread,7)
┃ ┠tq(kblockd/0,10)
┃ ┠tq(kacpid,11)
┃ ┠tq(cqueue/0,68)
┃ ┠tq(khubd,71)
┃ ┠tq(kseriod,73)
┃ ┠tq(khungtaskd,134)
┃ ┠tq(pdflush,135)
┃ ┠tq(pdflush,136)
┃ ┠tq(kswapd0,137)
―以下省略―
プロセスツリーの一部を表示する
プロセスツリーの一部分のみを表示したい場合は、対象となるプロセスのプロセスID(PID) を指定する。
code:bash
pstree -anp プロセスID
→ pstree コマンドに anp オプションと対象とするプロセスID(PID) を指定する。
code:terminal
$ pstree -anp 32309
sshd,32309
┠sshd,32311
┠bash,32312
┠pstree,1392 -anp 32309
部分表示では特に強調表示は必要ないと思われるので、-H オプションは省略する。