[Linux]yumをkillして応答しなくなったら

Posted under Linux by uechoco on 月曜日 18 4月 2011 at 11 : 44 : 48

VPSとか仮想環境ってyumが不安定なことが多いんですが、kill -KILL (PID)とかでプロセスを切ってしまうと、yumコマンドが動かなくなってしまうことがあります。

ネット上に解決策がありました。

なーした日記: yumが固まって応答しなくなる件(Fedora)

記事は2007年5月のものです。お名前.com VPS CentOS 5.3にて、同じ方法で復旧できました。


[Linux]CentOS 5.3/5.4のsudoコマンドが曲者。

Posted under Linux by uechoco on 月曜日 11 1月 2010 at 01 : 48 : 23

CentOS 5.3以降で、sudoコマンドのバージョンが新しくなり、sudoコマンド自体や、今まで使えていたsudoを含むスクリプトなどが使えなくなってしまうケースが出てきました。私も同様の現象にはまりました。私の場合は、スクリプト内で使用しているsudo付のコマンドでPATHが通らなくなってしまったという現象です。

今は以下のURLなどを参考に解決し、今まで通りの運用をしています。

記憶の片隅にでも覚えておいてもらえると役に立ったりするときがくるかもしれません。


[Mac]netatalkの.AppleDoubleでsymfonyコマンドがつまずく時がある

Posted under Linux,mac入門記,php,symfony by uechoco on 日曜日 13 9月 2009 at 02 : 03 : 07

タイトルでもわかるとおり、非常に限定的な環境で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

Bash:
  1. [ueno@localhost project]$ ./symfony propel:build-model
  2.   Unable to parse file "/path/to/project/config/.AppleDouble/schema.yml": Unable to parse line 1 (

なぜか.AppleDoubleフォルダ内のshema.ymlがパースできないと言われてしまいます。前述の通り、.AppleDoubleフォルダの中に元ファイル名と同名のメタファイルを生成しますので、もしかしたらschema.ymlという名前に反応してしまったのかもしれません。一応propel:build-modelのヘルプを見てみましょう。

Bash:
  1. [ueno@localhost project]$ ./symfony help propel:build-model
  2. Usage:
  3.  symfony propel:build-model [--phing-arg="..."]
  4.  
  5. Aliases: propel-build-model
  6.  
  7. Options:
  8.  --phing-arg  Arbitrary phing argument (multiple values allowed)
  9.  
  10. Description:
  11.  The propel:build-model task creates model classes from the schema:
  12.  
  13.    ./symfony propel:build-model
  14.  
  15.  The task read the schema information in config/*schema.xml and/or
  16.  config/*schema.yml from the project and all installed plugins.
  17.  
  18.  You mix and match YML and XML schema files. The task will convert
  19.  YML ones to XML before calling the Propel task.
  20.  
  21.  The model classes files are created in lib/model.
  22.  
  23.  This task never overrides custom classes in lib/model.
  24.  It only replaces files in lib/model/om and lib/model/map.

検索条件はconfig/*schema.ymlと書いてありますので、フォルダも引っかかってしまうようです。

で解決策はどうするのか?propel:build-xxx系のコマンドなどでは、symfonyライブラリの中に含まれるsfFinder.class.phpというユーティリティを利用しています。この中に、指定されたルールに基づいて、ファイルやディレクトリを検索するというin()メソッドがあるのですが、この中で、バージョン管理ソフトのディレクトリを無視するようなプログラムの掛かれば部分があります。symfony 1.2.8のlib/symfony/util/sfFinder.class.phpの341行目付近です。

php:
  1. /**
  2.    * Searches files and directories which match defined rules.
  3.    *
  4.    * @return array list of files and directories
  5.    */
  6.   public function in()
  7.   {
  8.     $files    = array();
  9.     $here_dir = getcwd();
  10.  
  11.     $finder = clone $this;
  12.  
  13.     if ($this->ignore_version_control)
  14.     {
  15.       $ignores = array('.svn', '_svn', 'CVS', '_darcs', '.arch-params', '.monotone', '.bzr', '.git', '.hg');
  16.  
  17.       $finder->discard($ignores)->prune($ignores);
  18.     }

svnやらcvsやらgitやらのメタ情報を保存するフォルダの除外指定が列挙されています。ならばここにAppleDoubleをいれればいいんでないか?ということで、修正多野がこちら

php:
  1. if ($this->ignore_version_control)
  2.     {
  3.       $ignores = array('.svn', '_svn', 'CVS', '_darcs', '.arch-params', '.monotone', '.bzr', '.git', '.hg', '.AppleDouble');
  4.  
  5.       $finder->discard($ignores)->prune($ignores);
  6.     }

symfonyのコアを書き換えるのはどうかと思ったのですが、この設定を付け加えるだけでnetatalk環境でのsymfonyコマンドが問題なく使えるようになったので開発が進みそうです。

まぁ、こんな環境でsymfony使う人はなかなか居ないと思いますが。。。


[Linux]ユーザ権限cron(crontab)のファイルの場所

Posted under Linux by uechoco on 水曜日 15 7月 2009 at 16 : 10 : 08

Linuxでcronをよく使うのですが、いつも/etc/crontabを直接編集してたりします。

最近はユーザ権限cron(個々のユーザでcrontab -eコマンドで作成したcron)も使うようになりました。

通常のcrontabのファイルは/etc/crontabにありますが、ユーザ権限のcrontabは、

  • /var/spool/cron/ユーザ名
  • /var/spool/cron/crontabs/ユーザ名

といったディレクトリに格納されているようです。どちらのディレクトリにあるかは、ディストリビューション(Debian、Fedora、CentOSなど)依存だと思われます。これらのファイルを開くと、crontab -eで編集していた内容と全く同一です。


[Linux]r8168ドライバが再起動後にr8169に戻る

Posted under Linux by uechoco on 土曜日 31 1月 2009 at 01 : 53 : 05

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?


次ページへ »

Copyright © 2012 うえちょこ@ぼろぐ. WP Theme created by Web Top.