問題タブ [lsof]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
linux - lsof は、riak プロセスで開いているファイル記述子の違いを示しています
私がやっlsof -l
ていると、開いているすべてのファイル記述子(〜180000)が表示されますが、チェックしていると〜1000lsof -lp pid
しか表示されません。pid を使用したプロセスには、pid
最大 170000 個のファイル記述子が開いていることがわかっています。
ログは次のとおりです。
なぜこのような違いがあるのでしょうか。
linux - 誰がファイルに書き込んでいるのか、または lsof がライターを表示しなかったのにリーダーが表示した理由
2 つの別々の端末で次の操作を行いました。
1期:
バックグラウンドでファイルに書き込みを行っているプロセスを開始します。
バックグラウンドで実行されている最後のプロセスの PID を取得します。
2学期:
書き込み中のファイルの内容を表示します。
前期:
誰がファイルにアクセスしているかを確認します (リーダーしかいないことに注意してください)
2番目の端末の後に終了し、空の出力をkill
返した後:tail -f
lsof
2学期:
その後tail -f
、もう一度開始したところ、データがまだログ ファイルに書き込まれていることがわかりました。これは、一部のプロセスがまだログ ファイルに書き込み中であることを意味します。
この場合、ファイルに書き込んでいるプロセスの不思議な PID を実際に知っています。それは PID 20604 なので、それを強制終了すると、ログ ファイルの成長が止まります。
私の質問は次のとおりです。
lsof
実際にログファイルに書き込んでいるプロセスが(繰り返し発行されても)表示されないのはなぜですか?20604 が属していることを理解してbash
おり、ファイルに直接書き込みを行っているのは bash ではなく、 childdate
です。しかし、lsof
どちらbash
も表示されませんでしdate
た。- PID 20604 がわからない場合はどうすればよいですか? では、書き込みプロセスをどのように追跡できますか?
PS: 使用したシェル: GNU bash、バージョン 4.2.37(1)-release (x86_64-pc-linux-gnu)
javascript - プロセス A によって書き込まれたファイルがプロセス B によって読み取られる準備ができているかどうかを確認する
ファイルAを書き込むプログラムを呼び出すkシェルを実行するJavaスクリプトがあります。その後、同じJavaスクリプトが出力ファイルAを解析します。他のプロセスはファイルAを読み書きしません。
問題は、ファイル A が時間内に解析される準備が常に整っているとは限らないことです。これは、プログラムと呼び出し元のシェルが戻った後でも、ファイル システムがまだジョブを終了しているためだと思います。これは、多数のプロセスが実行されている場合にのみ発生します。
私のシステムでは lsof が動作しないようです。エディターでファイルを開くと、lsof はエディター プロセスを表示しますが、ファイル名を lsof に渡すと、次のようになります: lsof: no file use located: filename
プログラムまたはkシェルから戻る前にロックを解除する必要があるため、ファイルが完全に閉じられていない可能性があるため、fileLockは機能しないと思います。
私の考えでは、ファイルの名前を変更 (mv) し、パーサーに名前を変更したファイルを解析させる短いスクリプトを作成することでした。私の理解では、ファイルは完全に書き込まれるまで名前を変更できないということです。mv コマンドからの stdOut に何かが含まれているかどうかを確認する while ループに mv コマンドを入れました。理論的には、それが空であれば問題ありません。
mv が停止された例はまだ見たことがありません。コメント、提案、ヒント、または侮辱は大歓迎です。すべてに前もって感謝します。
linux - ファイルが Linux で開かれているかどうかを確認する方法は?
問題は、ユーザーが共有アカウントでファイルを開こうとしたかどうかを追跡したいということです。関連するファイルが実行時に開かれているかどうかを知るのに役立つ記録/手法を探しています。
ファイルが開いているかどうかを監視するスクリプトを作成し、開いている場合は特定の電子メール アドレスにアラートを送信したいと考えています。私が考えているファイルは通常のファイルです。
geditでファイルが開いているかどうかを確認するために使用しようとしlsof | grep filename
ましたが、コマンドは何も返しません。
実際、私はペットプロジェクトのためにこれを試しているので、質問です。
linux - lsof を実行した後の ESTABLISHED インジケーターの意味
コマンドを実行しましたがsudo lsof -i -n -P | grep TCP
、その出力についてさらに明確にすることができるかどうか疑問に思っていました。
具体的には、この画像では:
IP:PORT が別の IP:PORT を指しているのに、'ESTABLISHED' というラベルでそれ自体に戻るのはなぜですか? これが正確に何を意味するのか混乱しています。
node.js - ポート 80 がどのように転送され、構成が特定のシステムのどこにあるかを決定論的に追跡することは可能ですか?
Ubuntu 14.04 LTS を実行しているシステムでポート転送構成がどのように設定されているかを特定または追跡する方法はありますか? サービス自体はポート 8080 で実行されていますが、NodeJS サービスが実行されており、ポート 80 経由で接続を受け入れています。ポート 80 接続が Apache によって処理されていることは明らかですが (以下の詳細を参照)?
システムで を実行しようとしlsof -i :80
ましたが、 によるとlsof
、ポート 80 で実行されているプロセスはありません。ただし、興味深いことに:
Apache の構成を調べたところ、Apache の構成が にあり、レコード、またはそのようなもの/etc/apache2/apache2.conf
を見つけることができませんでした。VirtualHost
ProxyPass
私も念のため確認iptables -L
しました。
httpry
ポート転送の構成と、実行中のどのプロセスがポート転送を担当しているかを把握するのに役立ちますか?
regex - Mac 端末で lsof と awk を一緒に使用すると奇妙な動作が発生しますか?
「Google」が含まれるすべての行を見つけたいlsof
ので、次のことを試しました。
これにより、「google」という単語で始まる行を含む出力が正しく生成されます。
しかし、次にこれを試してみると、csvには何も含まれていません:
\s*
でも、これはスペースがいくつあってもいいと思っていました。この動作には何か理由がありますか? ありがとうございました。