問題タブ [fuser]

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.

0 投票する
1 に答える
294 参照

bash - Unix で fuser コマンド出力を変数に保存する方法

私はスクリプトの初心者で、次の問題があります。

fuserコマンドを使用して、その名前のファイルが存在するかどうかを確認したいと考えています。コマンドの出力を保存し、後でそれを使用して、ロードする前にファイルの名前を変更したいと考えています。

私は次のことを試しました:

ただし、上記のコードの結果は次のとおりです。

コマンドの出力が変数に保存されず、画面に表示され、その理由がわかりません!

私がやりたいことはTest_file_20180823120345.dat、変数に保存し、 file_nameそこからタイムスタンプを削除して、ファイルの名前をTest_file_20180823.dat.

次に、ステージング テーブルにデータを再度ロードした後、ファイルの名前を受け取った古いファイル名に変更し、ファイルを元の名前でアーカイブします。

0 投票する
4 に答える
730 参照

bash - FreeBSD の bash スクリプトでファイルが開いているかどうかを判断する方法

Linux bash スクリプトを FreeBSD に移植しようとしています。スクリプトは、何らかのアクションを実行するかどうかを決定する前に、ファイルが (書き込み用に) 開いているかどうかを確認する必要があります。

Linux では、次のfuserコマンドを使用すると簡単に実行できました。

ただし、FreeBSD では、fuserコマンドは完全に壊れているように見え (これによって裏付けられます)、適切な終了コードや実際に有用な出力を stdout に返しません。たとえば、アクティブに書き込まれているファイルでは次のようになります。

編集:


ウラジミール・ボトカのコメント:

「FreeBSD 12.0 ショーでの簡単なテスト」:

私の FreeBSD ボックス (FreeBSD 12 も) では、同じテストで次の結果が得られます。

ウラジミール・ボトカのコメント:

ファイルを開き、入力を待ち、入力をファイルに書き込む単純な C プログラムを使用して、ファイルへの書き込みをテストしてみましょう。

コンパイルされた C コードに対する私のテストは次のとおりです。

したがって、fuser壊れているようです。ただし、両方とも FreeBSD 12 であるため、Vladimir Botka のシステムではなく、私のシステムでのみ壊れているようです。


この情報を使用lsofまたはfstat取得できるようですが、スクリプトをより複雑にする出力の複雑な解析が必要です。fuserFreeBSD で動作するようなファイルが使用されているかどうかを判断するための単純な「はい/いいえ」コマンドを教えてくれる人がいるかどうか疑問に思いましたか?

どうもありがとう、

0 投票する
1 に答える
195 参照

docker - マウントされたdockerhostファイルシステム/ボリュームで開いているファイルをdocker内から確認する方法

独自の docker コンテナー内で実行されている私のアプリは、マウントされたファイルシステム/ボリュームにあるファイルが、Linux dockerhost 上の別のプロセス (このアプリのコンテナー内のプロセスではない) によってまだ開かれているかどうかを確認する必要があります。たとえば、私のアプリは、dockerhost のプロセスがこのファイルの書き込みを終了した後にのみ、入力ファイルの処理を開始する必要があります。

アプリが dockerhost で直接実行される場合、「fuser」または「lsof」コマンド (root として/sudo 経由で実行) は必要な出力を提供します (たとえば、ファイルにアクセスするプロセス ID を一覧表示するため)。しかし、docker コンテナー内からの fuser コマンド (root として実行しても) は、プロセスを表示しません。

UNIXレベルまたはより良いpython3のコードスニペットは役に立ちます!