Jika kita gunakan echo 1234 >> some-filemaka Dokumentasi mengatakan bahwa output ditambahkan.
Dugaan saya adalah, jika beberapa file tidak ada, maka O_CREAT akan membuat file baru. Jika >digunakan, maka O_TRUNC akan memotong file yang ada.
Dalam kasus >>: Apakah file akan dibuka sebagai O_WRONLY (atau O_RDWR) dan berusaha untuk mengakhiri dan menulis operasi dilakukan, mensimulasikan O_APPEND? Atau apakah file akan dibuka sebagai O_APPEND, membiarkannya ke kernel untuk memastikan penambahan terjadi?
Saya menanyakan hal ini karena proses conserver menimpa beberapa marker yang dimasukkan oleh echo, ketika file output berasal dari titik mount NFS, & Dokumentasi NFS mengatakan O_APPEND tidak didukung di server, jadi kernel klien harus menanganinya. Saya kira proses conserver menggunakan O_APPEND, tetapi tidak yakin tentang bash >>di linux, maka mengajukan pertanyaan di sini.
O_APPENDtidak didukung; masalahnya adalah ini ditiru. Pada sistem file lokal, beberapa proses penulisan ke file yang sama dibuka denganO_APPENDtidak akan pernah menimpa data masing-masing; pada NFS,O_APPENDditiru dengan mencari sampai akhir sebelum menulis, yang meninggalkan kemungkinan kondisi balapan. Tidak ada jalan lain di NFS ini; setiap penulis paralel perlu menulis file sendiri. Satu-satunya cara untuk mengatasi ini adalah menyiapkan proses server pada server NFS, memiliki logger log|nc server port, dan meminta server menambahkan data yang masuk ke log.