BASH:複数のbashバックグラウンドプロセスが同じファイルに書き込むのは安全ですか?

ジョージ・P・バーデル

私は、すべて同じファイルに書き込む複数のバックグラウンドスクリプトを起動するbashスクリプトを書いています。私のスクリプトは次のようになります。

for (( COUNTER=0; ...)); do

    ./otherscript a b &

done
wait

および./otherscriptは次のようになります。

echo $1 $2 >> file.txt

これは安全ですか?これらのスクリプトはバックグラウンドで実行される可能性があり、DebianおよびUbuntuシステムで実行されます。

チャールズ・ダフィー

O_APPENDモードのPOSIX準拠のファイルシステム(ext4、XFSなど)では(これが>>提供されます)、プロセスの数に関係なく、書き込みは常に最下位になります。さらに、これらの書き込みが1つのメモリページに収まる場合、それらが複数の個別に追加されたコンポーネントに分割されるリスクはありません。

したがって、これは安全ではありません。

exec >>somefile   # redirects all future stdout to somefile in O_APPEND mode
printf %s 'Hello' # BUGGY: Writing less than a line, so you can get split at this point
echo ' World'

...そしてこれもそうです:

exec >somefile     # truncate file and make all future writes go to it, NOT in O_APPEND mode
echo "Hello World" # BUGGY: Not opened with O_APPEND, so our file pointer may not be
                   # ...at the end after other programs have been doing concurrent writes.

...しかし、これ安全です:

exec >>somefile     # redirects all future stdout to somefile in O_APPEND mode
echo "Hello World"  # SAFE: Writing a complete line, less than 4kb, in O_APPEND mode.

書き込みが1ページ(通常は4kb)より大きい場合、複数のシステムコールに分割される可能性があるという警告がありますが、短くして、それぞれに完全なレコードが含まれていることを確認してください。安全です。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Javaの複数のプログラムが同じテキストファイルに書き込む

分類Dev

Python 3:複数のプロセスから同じファイルに混乱せずに書き込む方法は?

分類Dev

複数の並列バックグラウンドプロセスのbashで同じ変数名を使用できますか?

分類Dev

kerasのフィットジェネレーターのマルチプロセッシングモードを使用して、同じファイルに書き込む複数のプロセスを解決するにはどうすればよいですか?

分類Dev

C-同じログファイルに書き込む複数のプロセス

分類Dev

jarコマンドの結果をファイルに書き込むバックグラウンドでbashスクリプトループを実行します

分類Dev

WriteAsyncを使用する場合、複数のバックグラウンドワーカーが同じ.txtファイルに書き込もうとすると問題が発生しますか?

分類Dev

chromeのcontent_scriptsまたは拡張機能のバックグラウンドスクリプトを使用して、ファイルシステム上のファイルに書き込むことは可能ですか?

分類Dev

異なるマシン上の複数のユーザーが、C#WinFormプログラムからSharePoint上の同じExcelファイルにフォーム入力を書き込む方法はありますか?

分類Dev

値が読み取られない場合、複数のスレッドが同じブール値に書き込むのは安全ですか?

分類Dev

サブプロセスはバックグラウンドで実行され、出力を1行ずつファイルに書き込みます

分類Dev

複数のスレッドが同時にファイルにデータを書き込むことはできますか?

分類Dev

OpenCLカーネルがランダムに__globalバッファに書き込むのは安全ですか?

分類Dev

bashの埋め込みforループから複数のテキストファイルを書き込むにはどうすればよいですか?

分類Dev

プライマリロケーションでのファイルのアップロードと同時に、複数のセカンダリロケーションへの同じファイルの読み取りと書き込み

分類Dev

複数のスレッドが同じ値を同じ変数に同時に安全に書き込むことができますか?

分類Dev

複数のクラスからBufferWriterを使用して同じファイルに書き込む

分類Dev

ロックなしで複数のスレッドからファイルに書き込む

分類Dev

複数のRandomAccessFileオブジェクトが同じファイルにデータを書き込むことはできますか?

分類Dev

同じFileWriterファイルを使用して、複数のメソッドからそれに書き込むことは可能ですか?

分類Dev

複数のPythonスレッドから同時にログファイルに適切に書き込む方法は?

分類Dev

出力をログファイルにリダイレクトし、同時にプロセスをバックグラウンドで実行できますか?

分類Dev

複数のバッチ ファイルが同じ共有/グローバル変数にアクセス/設定することはスレッドセーフですか?

分類Dev

安全なプログラミング。ファイルをチェックしてから書き込むときにTOCTOUの脆弱性を回避する方法

分類Dev

メッセージのタイムスタンプをログファイルに書き込むにはどうすればよいですか?

分類Dev

同じファイルに書き込む2つのプロセス

分類Dev

同じPythonプログラムから2つの別々のログファイルを書き込む方法は?

分類Dev

複数のスレッドが同じファイルを書き込むのを防ぐ

分類Dev

Linuxでバックグラウンド処理されているのに、Pythonスクリプトがファイルに書き込まれないのはなぜですか?

Related 関連記事

  1. 1

    Javaの複数のプログラムが同じテキストファイルに書き込む

  2. 2

    Python 3:複数のプロセスから同じファイルに混乱せずに書き込む方法は?

  3. 3

    複数の並列バックグラウンドプロセスのbashで同じ変数名を使用できますか?

  4. 4

    kerasのフィットジェネレーターのマルチプロセッシングモードを使用して、同じファイルに書き込む複数のプロセスを解決するにはどうすればよいですか?

  5. 5

    C-同じログファイルに書き込む複数のプロセス

  6. 6

    jarコマンドの結果をファイルに書き込むバックグラウンドでbashスクリプトループを実行します

  7. 7

    WriteAsyncを使用する場合、複数のバックグラウンドワーカーが同じ.txtファイルに書き込もうとすると問題が発生しますか?

  8. 8

    chromeのcontent_scriptsまたは拡張機能のバックグラウンドスクリプトを使用して、ファイルシステム上のファイルに書き込むことは可能ですか?

  9. 9

    異なるマシン上の複数のユーザーが、C#WinFormプログラムからSharePoint上の同じExcelファイルにフォーム入力を書き込む方法はありますか?

  10. 10

    値が読み取られない場合、複数のスレッドが同じブール値に書き込むのは安全ですか?

  11. 11

    サブプロセスはバックグラウンドで実行され、出力を1行ずつファイルに書き込みます

  12. 12

    複数のスレッドが同時にファイルにデータを書き込むことはできますか?

  13. 13

    OpenCLカーネルがランダムに__globalバッファに書き込むのは安全ですか?

  14. 14

    bashの埋め込みforループから複数のテキストファイルを書き込むにはどうすればよいですか?

  15. 15

    プライマリロケーションでのファイルのアップロードと同時に、複数のセカンダリロケーションへの同じファイルの読み取りと書き込み

  16. 16

    複数のスレッドが同じ値を同じ変数に同時に安全に書き込むことができますか?

  17. 17

    複数のクラスからBufferWriterを使用して同じファイルに書き込む

  18. 18

    ロックなしで複数のスレッドからファイルに書き込む

  19. 19

    複数のRandomAccessFileオブジェクトが同じファイルにデータを書き込むことはできますか?

  20. 20

    同じFileWriterファイルを使用して、複数のメソッドからそれに書き込むことは可能ですか?

  21. 21

    複数のPythonスレッドから同時にログファイルに適切に書き込む方法は?

  22. 22

    出力をログファイルにリダイレクトし、同時にプロセスをバックグラウンドで実行できますか?

  23. 23

    複数のバッチ ファイルが同じ共有/グローバル変数にアクセス/設定することはスレッドセーフですか?

  24. 24

    安全なプログラミング。ファイルをチェックしてから書き込むときにTOCTOUの脆弱性を回避する方法

  25. 25

    メッセージのタイムスタンプをログファイルに書き込むにはどうすればよいですか?

  26. 26

    同じファイルに書き込む2つのプロセス

  27. 27

    同じPythonプログラムから2つの別々のログファイルを書き込む方法は?

  28. 28

    複数のスレッドが同じファイルを書き込むのを防ぐ

  29. 29

    Linuxでバックグラウンド処理されているのに、Pythonスクリプトがファイルに書き込まれないのはなぜですか?

ホットタグ

アーカイブ