コマンド Tips

ファイル操作

指定した容量のダミーファイルを作成する

coLinux 用の swap ファイルを作成するとき、自動バックアップスクリプトのベンチマークに使用するバックアップ対象ダミーファイルを作成するとき、など、任意のサイズのダミーファイルを作成したい場合は dd コマンドを使用する。

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 で指定されたファイルにコピーする

コマンドである。

実際の実行結果は、以下のとおり。

$ 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 コマンドを使用する。

rename FROM_STRING TO_STRING TARGET_FILE

→ 対象となるファイル (TARGET_FILE) の FROM_STRING に該当する部分を TO_STRING に置き換えてリネームする。

$ ls
bar.htm  foo.htm  fuga.htm  hoge.htm
$ rename .htm .html *.htm
$ ls
bar.html  foo.html  fuga.html  hoge.html

diffコマンドに一時ファイルを作らずにコマンドの実行結果を渡す

diff コマンドは引数にファイル以外を指定することはできないため、

# これはできない
diff `command1` `command2`

のように、コマンドの実行結果を直接渡すことはできない

通常、この command1command2 の実行結果を diff コマンドで比較するには、一時ファイルに各コマンドの実行結果を出力し、その一時ファイルを diff コマンドで比較することになる。

だが、プロセス置換を使用することで、一時ファイルを作成せずに、コマンドの実行結果を直接 diff コマンドに渡すことができる。

diff <(command1) <(command2)

プロセス

プロセスをツリー形式で表示する

プロセスツリー全体を表示する

プロセスの親子関係をわかりやすく表示するには pstree コマンドを使用する。

pstree -anpHプロセスID

→ pstree コマンドに anpH オプションと強調表示したいプロセスID(PID) をスペースなしで指定する。

pstree コマンドは実行中のプロセスの親子関係をツリー構造で表示するコマンドである。

特定のプロセスを強調表示したい場合は H オプションと共に対象のプロセスID を指定する。強調表示が不要な場合は、H オプションとプロセスID は不要となる。

各オプションの詳細は以下のとおり。

-a
コマンドラインの引数を表示する。
-n
PID でソートする。
-p
PID を表示する。
-h
カレントプロセスとその先祖のプロセスを強調表示する。
-H*プロセスID*
指定した PID のプロセスを強調表示する。
$ 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) を指定する。

pstree -anp プロセスID

→ pstree コマンドに anp オプションと対象とするプロセスID(PID) を指定する。

$ pstree -anp 32309
sshd,32309
  ┠sshd,32311
      ┠bash,32312
          ┠pstree,1392 -anp 32309

部分表示では特に強調表示は必要ないと思われるので、-H オプションは省略する。