タグ付けされた質問 「open-files」

現在プログラムで開かれているファイルを処理する

3
現在のbashセッションで開いているファイル記述子(およびそれらが参照するファイル)をリストする方法
インタラクティブなbashセッションで実行しています。execを使用していくつかのファイル記述子を作成しました。bashセッションの現在のステータスを一覧表示したいと思います。 現在開いているファイル記述子をリストする方法はありますか?

2
ファイル記述子リンクの移植性
私は今、そうやるので、私はいつも、これを疑問に思いませんが、決して見つけるために時間がかかってきました-使用法がどのようにポータブルここに示したいずれかの/proc/$$/fd/$Nか/dev/fd/$N?私はPOSIXの保証 を理解して/dev/null, /dev/tty, and /dev/console います(この回答に関するコメントを読んだ後、先日それを見つけただけです)が、これらの他のものはどうですか? 私が知る限り、それらはかなり一般的ですが、どのシステムでそれらを見つけることは期待できませんか?何故なの?どちらか一方を見つける可能性が高いですか?彼らはいつも同じような属性を示しますか? 私はこれらのデバイスをあらゆる方法でかなり広範囲に使用する傾向があるので、試してみるだけで不足する可能性があるかどうかを知りたいです。 また、上記の質問は私が知りたいと思うものだけであると理解されるべきですが、私は明らかに最初に尋ねなければならないので、私はこの点で最もよく知らないかもしれず、それらは厳しい要件と見なされるべきではありません答え。可能であれば手掛かりをお願いします。

6
「lsof」コマンドの代替手段?
多くの場合、「lsof」は作業する必要のあるマシンにはインストールされませんが、lsofの「機能」が非常に必要になります(AIXなど)。:\ Windows以外の世界に「lsof」のようなアプリケーションはありますか? 更新:例:「/ home / username」ディレクトリを使用するプロセスを知る必要がありますか?

1
開いているファイルでfile-nrとlsofのカウントが異なるのはなぜですか?[閉まっている]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、 UnixおよびLinux Stack Exchangeで話題になるようにします。 閉じた3年前。 私は突然問題に直面しています。すべてのアプリケーションとサーバーが正常に動作しており、突然開いているファイルの数が急増するのがわかります。 このコマンドで確認しています: cat /proc/sys/fs/file-nr これで確認すると、が表示される44544 0 128000ため、44544が開いているファイルの数です。 しかし、このコマンドで確認するとlsof | wc -l -28384と表示されます。 どちらが正しいですか? 私の最大オープンファイル制限は65535です ulimit -a open files (-n) 65535 開いているファイルを多く使用している上位5つのプロセスを知りたい。私はこれを取得できますlsofが、ここに示されているカウントは、前述した他のコマンドとは非常に異なります。 このコマンドでカウントされたプロセスの詳細を取得できますcat /proc/sys/fs/file-nrか? 以下のリンクによると、オープンファイル記述子を表示する方法はありますが、lsofコマンドを使用しないことはできません 回避策はありますか?開いているファイルが突然使用されるようになったプロセスを見つける必要があります。 更新おめでとう ございます。私がやっていた間違いを見つけましたlsof | wc -lをルートからチェックしていませんでした。それが大きな違いを見た理由です。 ファイル-nrとlsofの出力にはまだ違いがあります| wc -l(ルートから)。lsofカウントはfile -nr countを超えています。この理由は、ファイル-nrがディレクトリの一部(lsofによってファイルと見なされる)を無視するためです。この理由は、Google自体についてのちょっとした調査で見つけました。いずれかの方法!すべての助けに感謝します!

2
どのプロセスがSTDOUTに書き込みを行っているかを調べる方法は?
実行中のプロセスの2つのインスタンスがあります。それらの1つは「frEAkIng oUT!」です。また、印刷エラーはSTDOUTに止まりません。 壊れたプロセスを強制終了したいのですが、間違ったプロセスを終了させないようにする必要があります。両方ともほぼ同時に開始され、使用するtopと、どちらもほぼ同じ量のメモリとCPUを使用していることがわかります。どのプロセスが正常に動作していないかを示すものを見つけることができないようです。 最も安全なことは、どのプロセス/ pidがSTDOUTに書き込んでいるかを把握することです。 それを行う方法はありますか?


3
既存のファイルを書き換えて、完全に一度だけ書き込まれた後、アトミックに新しいバージョンに置き換えられるようにします
私は漠然と、どこかで読んだことを覚えています。一部のUnicesでは、既存のファイルを書き込み用に開き、カーネルに古いバージョン(読み取り用にアクセスする他のプロセス)を使用するように要求するフラグがあり、「新しい"バージョンは完全に記述され(fdは閉じられます)、その時点からファイルは新しいバージョンとして表示されました。 言い換えると、他のプロセスは、古いバージョンまたは新しいバージョンのいずれかを認識し、不完全に記述されたバージョンは認識しませんでした。 知識のある人が私に参照を示すことができますか?

7
このネットワークソケットを使用しているのは何ですか?
NTPを使用してマシンの時刻を更新しようとしています。ただし、エラーが発生します。 host # ntpdate ntp1.example.org 10 Aug 12:38:50 ntpdate[7696]: the NTP socket is in use, exiting 「ソケットは使用中です」というエラーはどういう意味ですか?このソケットを使用しているものを確認するにはどうすればよいですか? これはCentOS 4.xシステムで発生しますが、FreeBSD 7.x、Ubuntu 10.04、およびSolaris 10でも発生します。

4
vimのファイルビューからディレクトリリストに切り替える方法は?
dirを開きましたvim some/dir。ツリー内をナビゲートできますが、ファイルを開いた後、ディレクトリビューに戻って別のファイルにナビゲートするためにファイルビューを閉じるにはどうすればよいでしょうか。:wqvimセッション全体を閉じるため、オプションはありません。それにはforモードがあると思いますが、それが何と呼ばれているのか、どのように起動するのかわかりません。 ファイルをファイルナビゲーションビューに閉じる方法は?

2
Linuxシステムで開いているファイルはどのように動作しますか?
ログファイルの名前を「foo.log.old」に変更し、アプリケーションが「foo.log」で新しいログファイルの書き込みを開始すると想定しました。ログファイルを新しい名前で追跡し、「foo.log.old」に行を追加し続けていることに驚いた。 Windowsでは、私はこの種の動作に精通していません-それを実装することさえ可能かどうかわかりません。この動作はLinuxでどのくらい正確に実装されていますか?どこで詳細を知ることができますか?

3
実行中のプロセスのSTDOUTリダイレクトを参照してください
このコマンドでアプリを起動した場合: /path/to/my/command >> /var/log/command.log そして、コマンドは戻りません、別のプロンプトから、STDOUTリダイレクトが設定されているものを確認する方法はありますか? 私はどちらかのようなものを探しています cat /proc/PID/redirects または ps -??? | grep PID しかし、どの方法でもかまいません。

2
ファイル記述子をclose()するとどうなりますか?
ファイル記述子で全体像を取得しようとしています。最初にこれらのファイル記述子を持つprocess1があるとします。 _process1_ | | | 0 stdin | | 1 stdout | | 2 stderr | |__________| 次に、ファイル記述子1を閉じます。 close(1); ファイル記述子1 は、カーネルのOpen Files Tableのstdout FILE構造体に変換(ポイント)します。 上記のコードでは、ファイル記述子1がプロセスのテーブルから削除され、次のようになります。 _process1_ | | | 0 stdin | | 2 stderr | |__________| しかし、カーネルではどうなりますか?んstdoutFILE構造体は、割り当て解除を取得しますか?stdoutが特別なファイル(モニター)であり、おそらく他のプロセスで使用されている場合、それはどのように可能ですか?単なる通常のファイル(たとえば.txt)であるFILE構造についてはどうですか?そのようなファイルが他のプロセスで使用されている場合はどうなりますか?

3
開いているファイルハンドルは、死んだときにどこに行きますか?
ファイルハンドルを開いている間に削除されたファイルはどうなりますか? MPlayerでの再生中にビデオファイルを削除でき、最後まで再生されることがわかったので、これを不思議に思っていました。データの取得元はどこですか?それはまだハードドライブから来ていますか?ファイルを削除すると、RAMにコピーされましたか? まだハードドライブ上にある場合、プログラムが基本的に未割り当ての領域から読み取りを実行しているときにファイルシステムをいっぱいにするとどうなりますか?RAMにバッファされている場合、バッファをフラッシュするとどうなりますか? ファイルがNFS共有にあった場合はどうなりますか?サーバーに保存されていますか?(それはセキュリティリスクではありません。大量のリモートファイルハンドルによるDoSですか?) やってlsof -n |grep '(deleted)'時々興味深い結果が得られます。共有ライブラリファイルをスワップアウトするパッケージをアップグレードする場合、それらのライブラリを使用していたプログラムを実行しても、何も変更されていないかのように使用できます。 ボーナスの質問:この状況でデータを死者から取り戻す方法はありますか?

4
ディレクトリが削除されたときの「ls」エラー
2つのシェルを開いています。1つ目はディレクトリAにあります。2つ目では、ディレクトリAを削除してから再作成します。最初のシェルに戻って入力するlsと、出力は次のとおりです。 ls: cannot open directory .: Stale file handle どうして?最初のシェル(存在しないディレクトリ内で開いたままのシェル)は、次のコマンドを待つ間「フリーズ」し、ディレクトリが削除されて再作成されたことを「認識」しなかったと思いました。シェルは、文字列以外の現在の作業ディレクトリへの「より深い」参照を保持しています$PWDか?

2
「/ proc」を読んで、プロセスがポートを開いたかどうかを確認します
特定のPIDを持つプロセスが外部コマンドを使用せずにポートを開いたかどうかを知る必要があります。次に、/procファイルシステムを使用する必要があります。/proc/$PID/net/tcpたとえば、ファイルを読み取って、プロセスによって開かれたTCPポートに関する情報を取得できます。ただし、マルチスレッドプロセスでは、/proc/$PID/task/$TIDディレクトリにはnet/tcpファイルも含まれます。私の質問は: すべてのスレッドnet/tcpファイルを調べる必要がありますか、それともスレッドによって開かれたポートがプロセスnet/tcpファイルに書き込まれますか?
13 linux  tcp  proc  open-files 

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.