一時ファイルを作成した後に直接アクセスするにはどうすればよいですか?

一時ファイルを作成した後に直接アクセスするにはどうすればよいですか?

SSHを介してリモートホストに接続し、一時ファイルを生成し、次のコマンドを実行するスクリプトがあります。

システムコール(mysql --database=information_schema --host=localhost < /tmp/drush_1JAjtt)

毎回別のファイルを作成します(モード:)drush_xxxxxx

リモコンで手動で数回実行してみました。

tail -f /tmp/drush_*

しかし、接続が遅すぎて、ほとんどの場合エラーが発生します。

尾: `/tmp/drush_*'を読むために開くことができません:そのファイルまたはディレクトリがありません

そのファイルを作成したらすぐにアクセスしてコンテンツを表示する方法はありますか?

ベストアンサー1

この問題が発生したとき特定アプリケーションの動作確認私はそれを信頼しません。アプリケーションは一時ファイルを作成して削除します。 ノブのソリューション大丈夫ですが、これを使用するとcat競合状態が発生する可能性があります(つまり、操作中にファイルがcat削除される可能性があるため、データの一部のみが取得されます)。

ファイル自体へのハードリンクを作成すると、競合状態が発生する可能性を減らすことができます。grepハードリンクの作成と作成はを介して組み合わせることができますawk。それで私は次のことを思い出しました。

inotifywait -e create -m --format "%w/%f" /tmp/suspicious_dir/ 2>&1 | 
awk 'NR>2{n=split($0,a,"/");system("ln "$0" /tmp/hardlink_to_"a[n]);}'

フラグを使用しているため、-e createすぐに生成される一時ファイルにのみ興味があり、出力形式は生成される一時ファイルへのフルパスを提供します。渡された出力の最初の2行を無視しますNR>2。報告された各ファイルに対して、ハードリンクは次の形式で生成されます。/tmp/hardlink_to_<original filename>

おすすめ記事