Linux/Macなどでシンボリックシンク(シムリンク)を張る際に、通常だと”ln -s file1 files2″みたいに行います。
しかし、複数のシムリンクを作成する際に、lnではワイルドカードが使えないので、一つ一つでの作業となり面倒です。
達人になると、findとxargもしくはforループなどのインラインコマンドやシェルスクリプト,perl,rubyで簡単なプログラムを書くのでしょうけど、もっと簡単な方法はないのだろうかと思っていました。
(CentOS6.xのLinuxの場合で説明)
たとえば、Muninのプラグインファイルをシムリンク張る際に、
大元のファイルは、/usr/share/munin/plugis/に入っており、この中から有効にしたいファイルを/etc/munin/plugins/へシムリンクを作成します。
今回は、postgress関連のシムリンクを張ってみます。
まず、postgress関連のファイルを確認すると、
$ ls /usr/share/munin/plugins/postgres_* /usr/share/munin/plugins/postgres_autovacuum /usr/share/munin/plugins/postgres_bgwriter /usr/share/munin/plugins/postgres_cache_ /usr/share/munin/plugins/postgres_checkpoints /usr/share/munin/plugins/postgres_connections_ /usr/share/munin/plugins/postgres_connections_db /usr/share/munin/plugins/postgres_locks_ /usr/share/munin/plugins/postgres_oldest_prepared_xact_ /usr/share/munin/plugins/postgres_prepared_xacts_ /usr/share/munin/plugins/postgres_querylength_ /usr/share/munin/plugins/postgres_scans_ /usr/share/munin/plugins/postgres_size_ /usr/share/munin/plugins/postgres_streaming_ /usr/share/munin/plugins/postgres_transactions_ /usr/share/munin/plugins/postgres_tuples_ /usr/share/munin/plugins/postgres_users /usr/share/munin/plugins/postgres_xlog
これらのファイル全部を一つ一つlnコマンドでシムリンク張るのは、かなり面倒ですよね。
そこで、Linux/Unixを触ったことがある方なら誰でもご存じのcpを使います。
そう、ファイルをコピーするコマンドのcpです。
では、早速作業してみましょう。
# cd /etc/munin/plugins/ # cp -s /usr/share/munin/plugins/postgres* .
cpコマンドに-sの引数をつけてやるだけで、あら不思議、簡単にシムリンクが張れます。
尚、シムリンク作成出来るcpは、FreeBSDやSoralisなど違うプラットフォームまたはバージョンによっては、使えないかもしれませんので、バージョンを確認し、man cpで-sが使えるか確認しましょう。
$ cp –version
cp (GNU coreutils) 8.4
作業後に、シムリンクが張れているか確認してみると、まとめてシムリンクが張られ作成されることが確認できました↓
postgres_autovacuum -> /usr/share/munin/plugins/postgres_autovacuum postgres_bgwriter -> /usr/share/munin/plugins/postgres_bgwriter postgres_cache_ -> /usr/share/munin/plugins/postgres_cache_ postgres_checkpoints -> /usr/share/munin/plugins/postgres_checkpoints postgres_connections_ -> /usr/share/munin/plugins/postgres_connections_ postgres_connections_db -> /usr/share/munin/plugins/postgres_connections_db postgres_locks_ -> /usr/share/munin/plugins/postgres_locks_ postgres_oldest_prepared_xact_ -> /usr/share/munin/plugins/postgres_oldest_prepared_xact_ postgres_prepared_xacts_ -> /usr/share/munin/plugins/postgres_prepared_xacts_ postgres_querylength_ -> /usr/share/munin/plugins/postgres_querylength_ postgres_scans_ -> /usr/share/munin/plugins/postgres_scans_ postgres_size_ -> /usr/share/munin/plugins/postgres_size_ postgres_streaming_ -> /usr/share/munin/plugins/postgres_streaming_ postgres_transactions_ -> /usr/share/munin/plugins/postgres_transactions_ postgres_tuples_ -> /usr/share/munin/plugins/postgres_tuples_ postgres_users -> /usr/share/munin/plugins/postgres_users postgres_xlog -> /usr/share/munin/plugins/postgres_xlog
Linux/Unixを10年以上も触っているに、cpコマンドでシムリンクが作成できるのを初めて知りました。お恥ずかしい・・