ฉันต้องการทราบว่าฉันใช้คำสั่ง CP หรือ MV เป็นรูทเพื่อคัดลอกไฟล์ไปยังไดเรกทอรีใหม่ซึ่งมีไฟล์นั้นอยู่แล้วและขณะนี้เปิดโดยผู้ใช้รายอื่นการดำเนินการจะสำเร็จหรือถูกบล็อกเพราะมันเป็น พร้อมใช้งาน?
ฉันได้ลองทดสอบสิ่งนี้บน VM ด้วยการรูทการเขียนทับไฟล์และเปิดโดยรูทในหน้าต่างเทอร์มินัลอื่นและมันก็ประสบความสำเร็จ แต่ฉันสงสัยว่านี่เป็นเพียงเพราะมันเป็นผู้ใช้เดียวกัน
สถานการณ์เฉพาะของฉันจริง ๆ แล้วจะเป็นการรูทการเขียนทับไฟล์ถ้ามีใครบางคนในเครื่อง windows เปิดมันผ่านการแชร์ SMB ปัจจุบันฉันไม่สามารถทดสอบด้วยวิธีนี้
หากมันจะไม่ประสบความสำเร็จเมื่อเปิดไฟล์แล้วจะทำอย่างไรถ้าฉันตั้งค่าเพื่อให้ทุกคนยอมรับผู้ใช้รูทแบบอ่านอย่างเดียว?
ข้อมูลเพิ่มเติมอีกเล็กน้อย:
ฉันกำลังทำงานกับระบบง่าย ๆ ในการสร้างไฟล์ csv ซึ่งมีคำสั่งทั้งหมดของเราสำหรับเดือนที่กำหนดและเพียงเพิ่มไปยังจุดสิ้นสุดของไฟล์เมื่อคำสั่งซื้อใหม่เข้ามาฉันและผู้ใช้รูท (cronjob กำลังเรียกใช้ไฟล์ php) จะ เป็นคนเดียวที่ต้องแก้ไขไฟล์
อย่างไรก็ตามคนอื่น ๆ มองพวกเขาเพื่อค้นหาคำสั่งซื้อเป็นครั้งคราว ในนาทีที่ฉันจะแก้ไขไฟล์ด้วยตนเองและไม่สามารถบันทึกไฟล์เหล่านั้นได้หากมีผู้ใช้อื่นเปิดอยู่ดังนั้นฉันสงสัยว่าฉันจะประสบปัญหาเดียวกันหรือไม่หากไฟล์เหล่านั้นถูกเก็บไว้ในเครื่อง linux ที่ผู้ใช้รูททำการแก้ไข
cp
และmv
จะเขียนทับไฟล์ที่เปิดอยู่รวมถึงไฟล์ที่กำลังเขียน ฉันต้องสมมติว่าพวกเขาไม่ได้ใช้O_EXCL
เมื่อพวกเขาเปิดแหล่งที่มาของไฟล์เป้าหมาย ฉันคิดว่าบรรณาธิการของคุณกำลังทำสิ่งนี้อยู่ โปรแกรมแก้ไขอื่นอาจสามารถเปิดไฟล์ได้ - ถ้าไม่คุณสามารถทำได้cp FilePath FilePath.tmp
แก้ไขFilePath.tmp
และmv FilePath.tmp FilePath
.