:::: MENU ::::

cpコマンドで複数のファイルを一括でシムリンク

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コマンドでシムリンクが作成できるのを初めて知りました。お恥ずかしい・・


MacのターミナルにてSolaris上のviでxtermエラーが出るときの対処

MacのターミナルやiTermにて、SunOS(Solaris)にログインし、viを起動すると、下記のエラーが出ることが多々あるのでメモ。

$ vi
xterm-256color: Unknown terminal type I don't know what kind of terminal you are on - all I have is 'xterm-256color'. [Using open mode]

Mac側ではxterm-256colorなのですが、Solaris側ではxterm-256colorって知らんよ!って事なので、Mac側の環境変数TERMを変更してあげればOKです。

Solaris10で使用可能なterminfoは、下記のようにして調べることが出来ます。

$ ls /usr/share/lib/terminfo/x
x1700 x1750 xitex xpcterm xtalk xtermc xterms
x1720 x820 xl83 xpcterms xterm xtermm

(ちなみに、Linuxでは/usr/share/terminfo/xです。)

これを元に、Mac側のターミナルで、環境変数を設定

$ vim ~/.bash_profile
$ export TERM=xterm
$ source ~/.bash_profile

Lazy galleryでサムネイルが表示されなくなった不具合

私が担当しているとあるブログで、サーバ:Coreserver、CMS:WordPressにて運用しており、アルバムのプラグインとして、lazy galleryと言うプラグインを利用しており、WordPress本体とプラグイン更新以外は手を付けておりませんでしたが、いつの間にか、閲覧が出来なくなってしまいました。

推測すると、たいていサムネイルが作成されていないか、パーミッションが適切でないことが多いですが、対処として、

  • キャッシュの削除
  • メモリ不足によりメモリを増やす
  • サムネイルの再構築
  • Coreserverなので、パーミッションの確認

などを確認してみましたが、どれも解決には至らず。

Lazy galleryで作成したアルバムページのソースを眺めていたところ、サムネイルのリンク近くに、何だか別のCSSクラスがあることを発見しました。

原因は、プラグインの競合だったようで、Hammyと言うプラグインを外したところ、無事改善した。


Debianでsourcelist内のhttpsが取得出来ないとき

標準以外のとあるパッケージを導入しようと、/etc/apt/sources.list内にURLを記述し、apt-get updateで更新したところ、下記のエラー

sudo apt-get update
E: The method driver /usr/lib/apt/methods/https could not be found.

調べてみたら、/usr/lib/apt/methods/内にhttpsがないので、エラーとなってますね。

解決方法は、httpsに対応したapt methodをインストールすれば良いです。

# apt-get install apt-transport-https

これで、/usr/lib/apt/methods/内にhttpsが導入されますので、もう1度apt-get updateで更新するだけです。

何で、標準でhttpsが入ってないんだろう?



expressをインストールしてもnot foundになる

node.js関連でexpressをインストールする場合があるかと思いますが、ネット上の情報では、下記みたいに書いている事が多いです。

# npm install -g express

でも、この通りにインストールして、expressを実行しようとすると、command not foundと見つからないのです。

# express
express: command not found.

パスが必要なのかと思って探してみても、expressが見つからないのです。

どうやら、express 4.xでは、下記のようにインストールするようです。

# npm install -g express-generator

これで、expressが動作した。


Macにインストールしたnpmをアップグレード

Macでhomebrewを利用して、インストールしたnodeをアップグレード。

homebrewでアップデートしても、バージョンが古かったので、別の方法を使用。

$ npm -v
1.2.32
$ node -v
v0.10.12

$ sudo npm cache clean -f
$ sudo npm install -g n
....
npm http 200 https://registry.npmjs.org/n/-/n-1.2.9.tgz
/usr/local/share/npm/bin/n -> /usr/local/share/npm/lib/node_modules/n/bin/n

$ /usr/local/share/npm/lib/node_modules/n/bin/n stable
     install : v0.10.29
       mkdir : /usr/local/n/versions/0.10.29
       fetch : http://nodejs.org/dist/v0.10.29/node-v0.10.29-darwin-x64.tar.gz
   installed : v0.10.29

$ node -v
v0.10.29

 


Linuxでユーザーパスワードが登録できない

CentOS(Linux)にて、ユーザーを作成し、パスワードを登録しようとしたら、下記のエラーで出来ない。

$ passwd
Changing password for user hoge.
Changing password for hoge
(current) UNIX password:
passwd: Authentication token manipulation error

どうやら、/etc下のpasswordとshadowファイルの整合性がとれない模様。

対応策は、pwconvのコマンドをrootで実行。 これで解決!


Macでlastcommを使うには

Linuxでは、個々のコマンド履歴が記録されて表示が出来るlastcommと言うコマンドがあります。

Macでも利用しようとしたら、lastcommは存在するが、記録されていない(デフォルトでONになってない)ようなので、利用可能にする。

$ sudo mkdir /var/account
$ sudo touch /var/account/acct
$ sudo accton /var/account/acct

この後、lastcommを実行し、下記のように表示されればOKです。

$ lastcomm
ls – root ttys000 0.00 secs (null) (0:00:00.00)
sudo -S root ttys000 0.00 secs Mon Jul 28 14:33 (0:00:00.00)
accton -S root ttys000 0.00 secs Mon Jul 28 14:33 (0:00:00.00)


QNAP上でscreenのエラー回避

Mac上のターミナルからからQNAPへSSH接続し、screenを起動しようとすると下記のエラーが出た。

[~] # screen /var/run/utmp: No such file or directory
Cannot find terminfo entry for ‘xterm-256color’.

ここでは、utmpとterminfoの2つを解決しなければならない。

まずは、utmpの回避

[~] # touch /var/run/utmp

ただし、QNAP再起動後には、消えてしまうので、これも解決したい場合には、http://stackoverflow.com/questions/12345675/screen-cannot-find-terminfo-entry-for-xterm-256colorを参考にされると良いでしょう。

次に、terminfoの回避

[~] # export | grep xterm
export TERM="xterm-256color"
[~] # ls /usr/share/terminfo/x/
xterm xterm-xfree86
[~] # export TERM=xterm-xfree86

 

説明すると、現在のxtermを調べ、xterm-256colorとなっているので、terminfo内を調べてみるとxterm-256colorが存在せず、xtermとxterm-xfree86なので、それらを指定する事で解決。

Macのターミナルアプリがxterm-256colorとなっているのが原因でもあるので、QNAPへ接続するときには、ターミナルタイプをxtermにしておけばOKです。


ページ:12345678...25