[ < ] | [ > ] | [ << ] | [上] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
このセクションでは,find
,xargs
,またはlocate
から
得られるエラーメッセージの説明,為すべきことへのアドバイスを記述します.
このマニュアルは英語で書かれています.GNU findutilsソフトウェアはエラー メッセージを多くの言語に翻訳されています.このためできるだけ我々は,プ ログラムに自明のことでエラーメッセージを生成させようと思います.この手 法は,英語のエラーメッセージに対応する別のものを実際には見ることになる 人々に,理解してもらうようお願いすることが難しくなります.通常,自明の エラーメッセージは記述しませんし,このドキュメントでも議論しません.こ のドキュメントで議論しているメッセージとして,英後のバージョンのメッセー ジだけリストアップしています.
9.1 findのエラーメッセージ | ||
9.2 xargsのエラーメッセージ | ||
9.3 locateのエラーメッセージ | ||
9.4 updatedbのエラーメッセージ |
[ < ] | [ > ] | [ << ] | [上] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
これは,find
のコマンドラインにダッシュやその他の特殊文字で開始さ
れるものが含まれていることを意味します.find
プログラムはこれを,
テスト,アクション,またはオプションとして解釈しようとしますが,認識は
しません.テストを試みる場合,指定しているものについてドキュメントを調
査して下さい.一方,文字列がワイルドカードを展開したファイル名の場合(例
えば,コマンドラインに‘*’がある場合),‘./*’や‘.’を代わり
に使用していると考慮します.
コマンドラインに余分な括弧がある場合(例えば,‘find . -print \)’), 通常はこうなります.
これらのメッセージは,find
がディレクトリに移動し,デバイス番号と
inodeが期待したものと異なるものが見つかったときに出力されます.
find
が移動したディレクトリがNFSファイルシステムの場合,
automount
は新しいファイルシステムを移動先のディレクトリにマウン
トすることが多いので(つまり,使用したいファイルシステムを知る方法です),
このメッセージは出力されません.そのため,このメッセージが出力される場
合は油断しないでください – automount
が信用できない可能性があり
ます.他の誰かがfind
の実行中にファイルシステムを捜査している可能
性を検討してください.find
を迷わせたり,別のファイル集合を探して
いるときに,それもファイルの集合だとみせかけたい人もいます.
このメッセージは,find
がディレクトリを変更し,期待しない場所に移
動したときに出力されます.これは二つの状況のいずれかになります.最初の
ものは,“オートマウント”で,find
がマウントされているファイルシ
ステムの現在の場所を決定する方法を知らないときに生じます.
二番目は,find
がファイルシステムの階層を降りるのではなく上がって
行くときに,ディレクトリのデバイス番号がカレントディレクトリの変更中に
変わるとき生じます.find
がファイルシステムの期待しない部分に迷い
込まないように,我々はこの時点で停止します.
このメッセージは,find
が現在のマウントポイントのリストを知る方法
が分からないシステムで上記と同じように出力されます.
bug-findutils@gnu.orgでたずねてください.
このメッセージは,find
がディレクトリを変更したとき,ディレクトリ
のinode番号が以前取得したinode番号と異なる場合に出力されます.これは通
常,find
がディレクトリ階層の深いところに長時間いて,他の人が親ディ
レクトリを同じファイルシステムの別の場所に移動したことを意味します.こ
れは,悪意があったり無かったりします.この状況では,思いがけないファイ
ルシステムの矛盾を避けるため,その時点でfind
は停止します.生じた
ことを理解するため,ls -li
やfind /path -inum 12345 -o
-inum 67893
を実行することが可能です.
バグの報告をしてください.findutils
のコードを自分でコンパイルし
た場合,ビルドツリーのコピーを保持したまま,システムの問題を質問しても
かまいません.同様の解釈として,GNUバージョンのconfigure
に問題が
あるように思われますが,システムのfnmatch
にバグがあるということ
で,恐らく正しく動かないでしょう.
-exec
アクションや,似たようなもの(-ok
など)を使用していて,
システムがフリーのプロセススロットを使いきった場合に,通常これが発生し
ます.また,システムが非常にビジーでシステムの最大プロセスの制限に到達
したり,リソースの制限に到達したことも考えられます.暴走したプロセスを
システムで調査してください(ps
が動作すればですが).プロセススロッ
トには,‘root’の利用に予約されているものもあります.
-exec
やそれに似たもので起動されたプログラムは,異常終了のシグナ
ルでキルされるものもあります.これは,それを報告するだけのメッセージで
す.
[ < ] | [ > ] | [ << ] | [上] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
このメッセージは環境変数が設定されすぎて(または,大きな値になっていて) プログラムを呼び出すプログラムのコマンドラインの引数の長さに関するシス テムの制限によって,余裕が無いことを意味します.これを意識的に行ってい るかどうかを確かめたいと思います.環境変数を未設定状態にしたり,現在の シェルを終了したりしてみてください.
‘-i’オプションを使用していて,xargs
のコマンドラインが非常に
大きな項目があり,適切に実施できないほどになっていて,コマンドラインを
作成する空間が十分に無いことを意味します.この問題は‘-s’オプション
で回避できると思いますが,デフォルトのサイズは非常に大きいものです.
xargs
を壊すぐらいに大きいものを試していることでしょう.
find
の同様のメッセージの記述を参照してください.
xargs
が実行するコマンドが255のステータスで終了したとき,
xargs
は停止することになっています.こうすることを期待しない場合,
プログラムをシェルスクリプトから呼び出して,255のステータスを返さないよ
うなラッパーにしてください.
find
の同様のメッセージの記述を参照してください.
[ < ] | [ > ] | [ << ] | [上] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
locate
プログラムは,updatedb
によって前もって構築されたデー
タベースに依存します.しばらく実行しないとそうなります.この問題を修正
するために,updatedb
を手動で実行してください.これは,システムか
らしばらく離れていたときに発生することが多く,それは,定期的な“cron”
タスクが実行されないためです.
これは発生すべきではありません.updatedb
を再実行してください.動
作するが,locate
がまだこのエラーを生成する場合,locate
--version
とupdatedb --version
を実行してください.これらは同じ出
力を生成すべきです.そうでない場合,道具をまぜて使用しています.
‘$PATH’環境変数と,シェルのaliase(もしあれば)を調べてください.両
方のプログラムがGNUバージョンであれば,これはバグです.これらのプログラ
ムのすべてのバージョンは,問題なければ相互互換性があるべきです.
bug-findutils@gnu.orgでたずねてみてください.
[ < ] | [ > ] | [ << ] | [上] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
updatedb
プログラム(と,それが呼び出すプログラム)はエラーメッセー
ジを出力しますが,ガイダンスを要求する人がいそうにありません問題があっ
て.これらを理解したい場合,bug-findutils@gnu.orgでたずねてみ
てください.
[ << ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
この文書は新堂 安孝によって2009年9月22日にtexi2html 1.82を用いて生成されました。