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>