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

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

3
Linuxで開いているファイルの数が制限されているのはなぜですか?
今、私は方法を知っています: プロセスごとに開くファイルの制限を見つける: ulimit -n すべてのプロセスで開かれているすべてのファイルをカウントします。 lsof | wc -l 開いているファイルの最大許容数を取得します。 cat /proc/sys/fs/file-max 私の質問は次のとおりです。Linuxで開いているファイルに制限があるのはなぜですか?
136 open-files  limit 

3
開いているが削除された大きなファイルを見つけて削除する
削除されたがアプリケーションでまだ開いている大きなファイルを見つけるにはどうすればよいですか?プロセスが開いている場合でも、このようなファイルを削除するにはどうすればよいですか? 状況は、ログファイルを非常に高速でいっぱいにするプロセスを実行していることです。理由はわかっていますが、修正できます。それまでは、プロセスをシャットダウンせずにログファイルをrmまたは空にしたいと思います。 単純に行うrm output.logと、ファイルへの参照のみが削除されますが、プロセスが終了するまでディスク上のスペースを占有し続けます。さらに悪いrmことに、ファイルの場所やサイズを見つける方法がなくなりました。ファイルが別のプロセスでまだ開いている場合でも、ファイルを見つけて空にする方法はありますか? 具体的には、DebianやRHELなどのLinuxベースのオペレーティングシステムを指します。

2
ulimit:ハード制限とソフト制限の違い
ulimitのハード制限とソフト制限の違いは何ですか? 開いているファイルの数については、1024のソフト制限と10240のハード制限があります。1024を超えるファイルを開くプログラムを実行することは可能です。ソフト制限は何ですか?


7
このUnixソケットペアのもう一方の端は誰ですか?
UNIXソケットのもう一方の端があるプロセスを判別したい。 具体的には、で作成されたものについて尋ねてsocketpair()いますが、問題はどのUNIXソケットでも同じです。 、およびparentを作成するプログラムがあります。親プロセスは閉じて、通信を続けます。子供は反対のことをします。次に、子は別のプログラムを実行します。2人は、このソケットペアを介して相互に通信できます。socketpair(AF_UNIX, SOCK_STREAM, 0, fds)fork()fds[1]fds[0]close(fds[0]); s=fds[1]exec()child1 さて、私は誰parentが知っているとしましょうが、私は誰が誰かを知りたいと思いchild1ます。どうすればいいですか? 私が自由に使えるツールはいくつかありますが、どのプロセスがソケットの反対側にあるのかを知ることはできません。私が試してみました: lsof -c progname lsof -c parent -c child1 ls -l /proc/$(pidof server)/fd cat /proc/net/unix 基本的に、2つのソケットとそれらに関するすべてを見ることができますが、それらが接続されていることはわかりません。親のどのFDがどの子プロセスと通信しているかを判断しようとしています。

1
プロセスの開いているファイルをリアルタイムで監視するにはどうすればよいですか?
Linuxマシンlsof でその時点で使用しているプロセスの開いているファイルを表示できることを知っています。ただし、プロセスはファイルを非常に迅速に開いたり、変更したり閉じたりすることができるためwatch、「Linuxで開いているプロセスファイルを監視する(リアルタイム)」で説明されているように、標準のシェルスクリプト(たとえば)を使用して監視すると表示できません。 だから、私はプロセスを監査する簡単な方法を探していて、それが時間の経過とともに何をしてきたかを見ると思います。監査を開始せずにプロセスを実行する時間をとる前に、どのネットワーク接続(試行)が行われたかを確認し、監査を開始できるようにすることもできれば素晴らしいことです。 理想的には、私はこれをしたいと思います: sh $ audit-lsof /path/to/executable 4530.848254 OPEN read /etc/myconfig 4530.848260 OPEN write /var/log/mylog.log 4540.345986 OPEN read /home/gert/.ssh/id_rsa <-- suspicious 4540.650345 OPEN socket TCP ::1:34895 -> 1.2.3.4:80 | [...] 4541.023485 CLOSE /home/gert/.ssh/id_rsa <-- would have missed 4541.023485 CLOSE socket TCP ::1:34895 -> 1.2.3.4:80 | this when polling straceすべてのシステムコールを表示しないフラグといくつかのフラグを使用してこれは可能でしょうか?

2
プロセス置換により、パイプである/ dev / fd / 63というファイルが作成されるのはなぜですか?
この特定の例のコンテキストで名前付きパイプを理解しようとしています。 私が入力し<(ls -l)、私の端末にとのような出力を得ますbash: /dev/fd/63: Permission denied。 と入力するcat <(ls -l)と、ディレクトリの内容が表示されます。私が交換した場合catにecho、私は端末名を取得すると思います(またはそれを何ですか?)。 echo <(ls -l)出力をとして与えます/dev/fd/63。 また、この出力例は私には不明確です。 ls -l <(echo "Whatever") lr-x------ 1 root root 64 Sep 17 13:18 /dev/fd/63 -> pipe:[48078752] ただし、指定するとls -l <()、ディレクトリの内容が一覧表示されます。 名前付きパイプの場合はどうなりますか?

2
/ proc / PID / fd / Xリンク番号
Linuxでは、で/proc/PID/fd/X、パイプまたはソケットであるファイル記述子のリンクには、次のような番号があります。 l-wx------ 1 user user 64 Mar 24 00:05 1 -> pipe:[6839] l-wx------ 1 user user 64 Mar 24 00:05 2 -> pipe:[6839] lrwx------ 1 user user 64 Mar 24 00:05 3 -> socket:[3142925] lrwx------ 1 user user 64 Mar 24 00:05 4 -> socket:[3142926] lr-x------ 1 user user 64 …


3
ファイルを「キャットしてフォロー」するにはどうすればよいですか?
ファイルはによって順次ダウンロードされていwgetます。 でアンパックを開始するとcat myfile.tar.bz2 | tar -xj、何が速いかに応じて、正しくアンパックされるか、「Unexpected EOF」で失敗する場合があります。 ファイルを "cat and follow"する方法、つまりファイルの内容をstdoutに出力しますが、EOFで終了せず、代わりにそのファイルにサブスクライブし続け、データの新しい部分を出力し続けます。ライターであり、N秒以内に再オープンされません。 @arielCoの回答に基づいて、cat_and_followスクリプトを作成しました。これは、ファイルが書き込み用に開かれなくなったときにも終了します。tail
31 files  pipe  cat  tail  open-files 

6
開いたままになっている削除済みファイルからディスク領域を解放する最良の方法
こんにちは私は削除された多くのファイルを持っていますが、何らかの理由で、削除されたファイルに関連付けられたディスクスペースは、ディスクスペースを取得しているファイルのプロセスを明示的に終了するまで利用できません $ lsof /tmp/ COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME cron 1623 root 5u REG 0,21 0 395919638 /tmp/tmpfPagTZ4 (deleted) 上記の削除されたファイルによって占有されるディスク容量は、タブキーを使用してファイルパスをオートコンプリートしようとするとエラーが発生するなどの問題を引き起こします bash: cannot create temp file for here-document: No space left on device しかし、実行しkill -9 1623た後、そのPIDのスペースが解放され、エラーが発生しなくなりました。 私の質問は: ファイルが最初に削除されたときにこのスペースがすぐに解放されないのはなぜですか? 削除されたファイルに関連付けられたファイルスペースを取り戻すための最良の方法は何ですか? また、私が使用した誤った用語や、この状況に関するその他の関連情報および関連情報をお知らせください。

2
追加されているファイルを移動しても安全ですか?
にfs.appendFile行を追加するために使用するnode.jsプロセスがありますfile.log。行ごとに約40文字の完全な行のみが追加されます。たとえば、呼び出しはlikeでfs.appendFile("start-end")、2つの呼び出しはfs.appendFile("start-")andのようではありませんfs.appendFile("end")。このファイルを移動するfile2.logと、行が部分的に失われたりコピーされたりしないことを確認できますか?

3
擬似端末デバイスのもう一方の端に誰がいるかをどのようにして知ることができますか?
私がする場合: echo foo > /dev/pts/12 いくつかのプロセスはfoo\n、ファイル記述子からマスター側にそれを読み取ります。 そのプロセスとは何かを知る方法はありますか? または、言い換えると、どのxterm / sshd / script / screen / tmux / expect / socat ...がもう一方の端にあるの/dev/pts/12かをどのようにして見つけることができますか? lsof /dev/ptmx任意のptyのマスター側にファイル記述子があるプロセスを教えてくれます。プロセス自体はptsname()(TIOCGPTNioctl)を使用して、マスター側への独自のfdに基づいてスレーブデバイスを見つけることができるため、以下を使用できます。 gdb --batch --pid "$the_pid" -ex "print ptsname($the_fd)" によって返されるpid / fdごとに、lsofそのマッピングを構築しますが、その情報を取得するためのより直接的で、信頼性が高く、邪魔にならない方法がありますか?


4
異なるプロセスの同じfdはどのようにして同じファイルを指すことができますか?
私が持っていると言うプロセス1およびプロセス2を。両方とも整数4に対応するファイル記述子を持っています。 ただし、各プロセスでは、ファイル記述子4はカーネルのオープンファイルテーブル内のまったく異なるファイルを指します。 そんなことがあるものか?ファイル記述子は、Open File Tableのレコードへのインデックスであると想定されていませんか?

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