👻
/dev/null (や他のデバイスファイル)を別の名前で参照する方法
ネタにマジレスするよ。
まあ、一回は断ればいいと思いますけど、ぼったくり料金をいただいて対応することもできますね。
とりあえず3つの方法を思いつきました。
mknod でデバイスファイルを作成する
/dev/null はデバイスファイルです。
$ ls -l /dev/null
crw-rw-rw- 1 root root 1, 3 Feb 10 22:49 /dev/null
Linuxカーネルからは char device major numer = 1, minor number = 3 として認識されています。
これと同じ情報でノードを作ればよいです。
$ sudo mkdir /stg1
$ sudo mknod -m 666 /stg1/null c 1 3
$ ls -l /stg1/null
crw-rw-rw- 1 root root 1, 3 Feb 15 13:15 /stg1/null
シンボリックリンクを張る
こちらがわかりやすくておすすめ。
$ sudo mkdir /stg2
$ sudo ln -s /dev/null /stg2/null
$ ls -l /stg2/null
lrwxrwxrwx 1 root root 9 Feb 15 13:17 /stg2/null -> /dev/null
/dev/null は名前が固定されているので簡単ですが、/dev/video2 など、状況によってファイル名が変わるものに対してシンボリックリンクをつくるには、udevを使います。詳しくはudevで検索してください。
/dev をまるごと別のディレクトリにmountする
$ sudo mkdir /stg3
$ sudo mount -B /dev /stg3
$ ls -l /stg3/null
crw-rw-rw- 1 root root 1, 3 Feb 10 22:49 /stg3/null
$ ls -l /stg3 |head
total 0
crw-r--r-- 1 root root 10, 235 Feb 10 22:49 autofs
drwxr-xr-x 2 root root 540 Feb 15 12:30 block
drwxr-xr-x 2 root root 80 Feb 10 22:49 bsg
crw------- 1 root root 10, 234 Feb 10 22:49 btrfs-control
drwxr-xr-x 3 root root 60 Feb 10 22:49 bus
drwxr-xr-x 2 root root 4560 Feb 11 19:56 char
crw--w---- 1 root tty 5, 1 Feb 10 22:49 console
lrwxrwxrwx 1 root root 11 Feb 10 22:49 core -> /proc/kcore
drwxr-xr-x 6 root root 140 Feb 11 19:56 cpu
/stg3 の下に /dev のファイルが丸ごと見えます。
最後に
いずれの方法も元の/dev/null はそのまま使い続けることができます。
手作業で動作を確認したら、Ansibleなどの設定ファイルも更新するのを忘れずに。
Discussion