bashでリストされているがアクセスできないファイル


0

Ubuntu 12.04システムで次のような動作が起こりますか?

  1. 私は「ubuntu」ユーザーとしてマシンにSSHで接続しました。
  2. ランニング ls -lah /data/* すべて「ubuntu」ユーザー/グループが所有し、完全な読み取り/書き込みアクセス権を持つ、空でないファイル(例:file1.txt、file2.txtなど)が何十個も表示されます。
  3. 私がしようとした場合 cat /data/file1.txt、bashは私にエラー "cat:/data/file1.txt:No such file or directory"を出します。

要するに、 ls はファイルのリストですが、それ以外の点ではファイルは本質的には存在しません。私はそれらを猫にすることも、いかなる方法でも読むことはできません。すべてのファイルに777権限を与えても何も変わりません。これは本当に奇妙です。何が起きてる?


の出力は何ですか ls -lad /data/file1.txt?です /data/file1.txt シンボリックリンク?
Darth Android

に設定されている権限 /data フォルダ( ls -lad /data )?たぶんそれはしていない x 所有者のため、ファイルを一覧表示することはできますが、アクセスすることはできません。
NuTTyX

@注意:それが問題であれば、ファイルサイズ、所有権、アクセス許可を表示することは不可能です。 ls -l…
G-Man

あなたの知性を侮辱する危険にさらされて - あなたはあなたが中のファイルを見ていると確信していますか? /data?なぜなら ls /data/* (なしで -d オプション) 内容 ディレクトリ内の /data。やりたいことがリストの内容だけであれば /dataと言っても十分いい ls -lh /data (またはあなたが望むどんなオプションでも、そしてもちろん、 -a そして -A 名前がで始まるものを含みます . ) …………また、試してみてください ls -lb /data ファイル名に表示不可能なバイナリ文字がないか確認します。
G-Man

の結果は何ですか file /data/file1.txt または cd /date file file1.txt
broomdodger

回答:


2

ファイル名にバイナリ文字が含まれている可能性があります。

にとって cat /data/file1.txt代わりに、名前の一部を一致させて、残りの部分をシェルに理解させます。

cat /data/*1.txt

いいえ、私はすでにこれを確認しました。ディレクトリをオートコンプリートしようとしても、ファイルが読み取れないため、何も返されません。
Cerin

オートコンプリートは特定のファイルだけを「見る」でしょう。これを試して: egrep . /data/*
johntellsall

0

ファイルは削除された可能性がありますが、まだアプリケーションで開かれています。ファイルはディスク上には存在しませんが、アプリケーションはまだそれらを「オープン」にしているので、カーネルはファイルシステムからそれらをまだ完全に削除することはできません。

次のファイルを使ってプロセスを見つけます。

sudo lsof | grep data/file1.txt

それからそれが重要ではないならそのアプリケーションを再起動/強制終了するか、システムを再起動してみてください。


1
使用されている「アプリケーション」はありません。彼らはと作成されました rsync -avz /data ubuntu@remotehost:/data 私のローカルホストから実行します。そしてbashはまだそれらをファイルサイズでリストしています。
Cerin
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.