CentOS でファイルの ctime を変更する方法

  debugfs の modify_inode を利用して、通常では変更できない ctime を変更する
  ことが出来ました。
  
  まず、変更したいファイルがあるファイルシステムをアンマウントします。
  アンマウントできない場合は、最後に再起動が必要ですが、とりあえずそのまま
  続行できました。

$ sudo debugfs -w /dev/mapper/VolGroup00-LogVol00
debugfs 1.35 (28-Feb-2004)
debugfs:  cd /mnt/a/tmp
debugfs:  stat test.txt
Inode: 4788224   Type: regular    Mode:  0000   Flags: 0x0   Generation: 3112533598
User:    48   Group:    48   Size: 7382
File ACL: 0    Directory ACL: 0
Links: 1   Blockcount: 16
Fragment:  Address: 0    Number: 0    Size: 0
ctime: 0x49643779 -- Wed Jan  7 14:02:49 2009 <- この ctime を変えてみる
atime: 0x49618ea8 -- Mon Jan  5 13:38:00 2009
mtime: 0x49618ea8 -- Mon Jan  5 13:38:00 2009
BLOCKS:
(0):9592998, (1):9593000
TOTAL: 2

debugfs:  modify_inode test.txt
                          Mode    [0100000]
                       User ID    [48]
                      Group ID    [48]
                          Size    [7382]
                 Creation time    [1231304569] 1231130280 <- 変更するには値を入力
             Modification time    [1231130280]
                   Access time    [1231130280]
                 Deletion time    [0]
                    Link count    [1]
                   Block count    [16]
                    File flags    [0x0]
                    Generation    [0xb9857e5e]
                      File acl    [0]
           High 32bits of size    [0]
              Fragment address    [0]
               Fragment number    [0]
                 Fragment size    [0]
               Direct Block #0    [9592998]
               Direct Block #1    [9593000]
               Direct Block #2    [0]
               Direct Block #3    [0]
               Direct Block #4    [0]
               Direct Block #5    [0]
               Direct Block #6    [0]
               Direct Block #7    [0]
               Direct Block #8    [0]
               Direct Block #9    [0]
              Direct Block #10    [0]
              Direct Block #11    [0]
                Indirect Block    [0]
         Double Indirect Block    [0]
         Triple Indirect Block    [0]
debugfs:  stat test.txt
Inode: 4788224   Type: regular    Mode:  0000   Flags: 0x0   Generation: 3112533598
User:    48   Group:    48   Size: 7382
File ACL: 0    Directory ACL: 0
Links: 1   Blockcount: 16
Fragment:  Address: 0    Number: 0    Size: 0
ctime: 0x49618ea8 -- Mon Jan  5 13:38:00 2009 <- この ctime が変わった
atime: 0x49618ea8 -- Mon Jan  5 13:38:00 2009
mtime: 0x49618ea8 -- Mon Jan  5 13:38:00 2009
BLOCKS:
(0):9592998, (1):9593000
TOTAL: 2

debugfs:  quit

  ここで、再度マウントすれば OK。
  ただし、アンマウントできなかった場合は、ここでサーバを再起動すれば OK でした。

$ ls -lac
drwxrwxrwx  6 sunaoka sunaoka 4.0K Jan  7 14:34 .
drwxrwsr-x  3 sunaoka sunaoka 4.0K Jan  7 13:35 ..
-rw-r--r--  1 sunaoka sunaoka 7.3K Jan  5 13:38 test.txt

.screenrc をリロードする

  .screenrc を弄っていて、設定を確認するたびに、quit していましたが、再読み込みすることが出来たらしい。

  エスケープ (デフォルトだと C-a) した後に、下記コマンドで OK です。

:source $HOME/.screenrc

  ちなみに、:source ~/.screenrc だと NG でした ($HOME じゃないと駄目)。

dig の出力に色をつける dig-color

  dig の出力に色をつける dig-color というのを作ってみました.
  リソースレコードタイプは A/NS/CNAME/SOA/MX のみにしか対応していませんので,そのほかのタイプが必要であれば追加してください.

#!/usr/bin/env ruby

colors = {
    "section" => "02;01",
    "comment" => "37",
    "normal"  => "00",
    "A"       => "32",
    "NS"      => "34",
    "CNAME"   => "36",
    "SOA"     => "33",
    "MX"      => "31",
}

IO.popen("dig " + ARGV.join(" ")) { |io|
    io.each_line { |line|
        color = colors["normal"]
        if line =~ /^;;.+SECTION:$/
            color = colors["section"]
        elsif line =~ /^;/
            color = colors["comment"]
        elsif line =~ /^(.+\s)(SOA|NS|A|MX|CNAME)(\s.+)$/
            color = colors[$2]
            # レコードタイプのみに色を付ける場合
            #line = sprintf "%s\e[%sm%s\e[00m%s\n", $1, colors[$2] ,$2, $3
        end
        printf "\e[%sm%s\e[00m", color, line
    }
}


- 出力例 (この色が見やすいかどうかは……)
  


- 追記
  Perl で書き換えてくれた方がいました.

- dig の出力に色をつける dig-color(perl版) | cafe chantant blog
  http://www.cafechantant.com/blog/2007/07/04/dig-%e3%81%ae%e5%87%ba%e5%8a%9 ...

syslog のプライオリティについて

  syslog のプライオリティは以下の図のようになっている.

  Syslog priority

  つまり,あるプライオリティを指定するとそれ以上のプライオリティがすべて記録される.
  例えば,err を指定すると,err,crit,alert,emerg が記録されることになる.

  ちなみに,Solaris にはすべてのプライオリティを指す `*' はないので注意.
  mail.* などと指定しても「unknown priority name "*"」と怒られます.

Sun Java Desktop System で I've detected a panel already running, and will now exit.

  JDS on Solaris 10 (たぶん Gnome 2.0 ベース) で以下のようなエラーメッセージが表示されて,
  パネルが表示されない場合の対処法.

I've detected a panel already running, and will now exit.
(他のパネルがすでに起動しています。終了します。)

  I've detected a panel already running, and will now exit.
  他のパネルがすでに起動しています。終了します。

# pkill -KILL gnome-panel

  で gnome-panel のプロセスを全部 kill してしまう.

TCP ポートをノックしてコマンドを実行する knockd

  http://www.atmarkit.co.jp/fsecurity/rensai/securitytips/044knockd.html

  特定のポートを特定の順番でノックすると,設定してあるコマンドを実行する.
  Linux のみ対応.

- knockd
  http://www.zeroflux.org/knock/

動的リンクされた実行ファイルと共有ライブラリを 1 つのファイルにまとめる statifier

  http://statifier.sourceforge.net/

  サポートされているプラットフォームは Linux のみ.
  libnss が必要な場合は LD_PRELOAD すればいいらしい.
  また,iconv が必要な場合も注意.

- via: いやなブログ
  http://namazu.org/~satoru/blog/archives/000089.html

ProFTPD で NLST が使えるようにするパッチ

  http://www.hayasoft.com/haya/linux/proftpd_nlst_patch.html

  ProFTPD では NLST がいつのころからか使えなくなったらしい.
  FFFTP を使っているとファイル一覧の取得が出来ないので困る.
  上記パッチを当てれば OK.

  FreeBSD の ports 場合は,上記パッチを

/usr/ports/ftp/proftpd/files/patch-module::mod_ls.c

  なんて風において,

# make install

  で OK.

ファイル名の文字コードを変換する convmv

  http://j3e.de/linux/convmv/man/

  SJIS のファイル名を EUC-JP に変更するには

convmv -r -f sjis -t euc-jp * --notest

  -r で再帰的に処理を行う.

rsync + pdumpfs 風味のバックアップツール Bontmia

- Bontmia - (Backup Over Network To Multiple Incremental Archives)
  http://folk.uio.no/johnen/bontmia/

  まさに rsync + pdumpfs なバックアップツール.
  使ってみるかな.

- via: vimrc diary
  http://vimrc.hp.infoseek.co.jp/diary/2005-11.html#2005-11-15-1