[Linux]yumをkillして応答しなくなったら
VPSとか仮想環境ってyumが不安定なことが多いんですが、kill -KILL (PID)とかでプロセスを切ってしまうと、yumコマンドが動かなくなってしまうことがあります。
ネット上に解決策がありました。
なーした日記: yumが固まって応答しなくなる件(Fedora)
記事は2007年5月のものです。お名前.com VPS CentOS 5.3にて、同じ方法で復旧できました。
VPSとか仮想環境ってyumが不安定なことが多いんですが、kill -KILL (PID)とかでプロセスを切ってしまうと、yumコマンドが動かなくなってしまうことがあります。
ネット上に解決策がありました。
なーした日記: yumが固まって応答しなくなる件(Fedora)
記事は2007年5月のものです。お名前.com VPS CentOS 5.3にて、同じ方法で復旧できました。
CentOS 5.3以降で、sudoコマンドのバージョンが新しくなり、sudoコマンド自体や、今まで使えていたsudoを含むスクリプトなどが使えなくなってしまうケースが出てきました。私も同様の現象にはまりました。私の場合は、スクリプト内で使用しているsudo付のコマンドでPATHが通らなくなってしまったという現象です。
今は以下のURLなどを参考に解決し、今まで通りの運用をしています。
記憶の片隅にでも覚えておいてもらえると役に立ったりするときがくるかもしれません。
タイトルでもわかるとおり、非常に限定的な環境でsymfonyを使ったときにハマってしまったので、今後、私と同じようなマニアックな環境でハマってしまった人がググってくれることを期待して備忘録を残します。
さて、私はMac OS X上にVMware Fusion 2を導入していて、会社での開発をVM上のCentOS 5で行っています。開発ではMacのCocoaに対応したEclipse 3.5を主にしようしています。EclipseでVM上のファイルを直接読み書きするため、netatalkというMac版sambaとも言えるソフトウェアをCentOSに導入して、MacとLinux間の共有を行っています。ここら辺のお話は、以前3回に渡って書いたnetatalk導入のブログの記事を参照してもらえればと思います。
Mac OS Xでで外部ストレージ(NFS)などを用いるとき、ファイルのメタ情報を保存するために、netatalkでは.AppleDoubleというフォルダを各フォルダごとに生成し、そのフォルダの中に元ファイル名と同名のファイル名でメタ情報を格納します。※WikipediaのAppleSingleにAppleDoubleについて記載があります。netatalkではnoadoubleというオプションがあり、「必要なければ.AppleDoubleを作らない」という設定にすることができるのですが、必要ある場合は当然作成されてしまいます。例えば、Eclipseからアクセスして保存とかをすると、.AppleDoubleが作られてしまうような気がします。
CentOS上にsymfonyを展開してMacからターミナルで操ろうとしたとき、基本的にはsymfonyのあの深いフォルダ階層のすべてに.AppleDoubleが生成されてしまうということです。そこでこまったのがsymfonyコマンド。propel:build-xxxとかやろうとすると、どうも.AppleDoubleのせいでうまくいかないことがあります。
例えばpropel:build-model
なぜか.AppleDoubleフォルダ内のshema.ymlがパースできないと言われてしまいます。前述の通り、.AppleDoubleフォルダの中に元ファイル名と同名のメタファイルを生成しますので、もしかしたらschema.ymlという名前に反応してしまったのかもしれません。一応propel:build-modelのヘルプを見てみましょう。
検索条件はconfig/*schema.ymlと書いてありますので、フォルダも引っかかってしまうようです。
で解決策はどうするのか?propel:build-xxx系のコマンドなどでは、symfonyライブラリの中に含まれるsfFinder.class.phpというユーティリティを利用しています。この中に、指定されたルールに基づいて、ファイルやディレクトリを検索するというin()メソッドがあるのですが、この中で、バージョン管理ソフトのディレクトリを無視するようなプログラムの掛かれば部分があります。symfony 1.2.8のlib/symfony/util/sfFinder.class.phpの341行目付近です。
svnやらcvsやらgitやらのメタ情報を保存するフォルダの除外指定が列挙されています。ならばここにAppleDoubleをいれればいいんでないか?ということで、修正多野がこちら
symfonyのコアを書き換えるのはどうかと思ったのですが、この設定を付け加えるだけでnetatalk環境でのsymfonyコマンドが問題なく使えるようになったので開発が進みそうです。
まぁ、こんな環境でsymfony使う人はなかなか居ないと思いますが。。。
Linuxでcronをよく使うのですが、いつも/etc/crontabを直接編集してたりします。
最近はユーザ権限cron(個々のユーザでcrontab -eコマンドで作成したcron)も使うようになりました。
通常のcrontabのファイルは/etc/crontabにありますが、ユーザ権限のcrontabは、
といったディレクトリに格納されているようです。どちらのディレクトリにあるかは、ディストリビューション(Debian、Fedora、CentOSなど)依存だと思われます。これらのファイルを開くと、crontab -eで編集していた内容と全く同一です。
Linux(CentOS 5.2)にて、NICのr8168ドライバとr8169ドライバの誤認問題がありますが、USB経由か何かでr8168モジュールをダウンロードして、モジュールのインストールに成功している人は多々見受けられます。
しかしながら私の環境では、一度r8168ドライバをインストールしたはずなのに、再起動すると再びr8169ドライバを認識してしまいます。毎回モジュールのインストールをしているわけにもいかないので、思案していたところ、r8168.koが/lib/modules/2.6.18-92.el5/kernel/drivers/net/にインストールされたことを見たので、もしやと思ったら、同じディレクトリ内にr8169.koもありました。試しにr8169.koをr8169.ko.escapeに改名して再起動したところ、最初からr8168ドライバを認識するようになりました。
一応動いてるから、これで万事OK?