Linux - คำสั่ง CP จะเขียนทับไฟล์ที่เปิดอยู่หรือไม่


1

ฉันต้องการทราบว่าฉันใช้คำสั่ง CP หรือ MV เป็นรูทเพื่อคัดลอกไฟล์ไปยังไดเรกทอรีใหม่ซึ่งมีไฟล์นั้นอยู่แล้วและขณะนี้เปิดโดยผู้ใช้รายอื่นการดำเนินการจะสำเร็จหรือถูกบล็อกเพราะมันเป็น พร้อมใช้งาน?

ฉันได้ลองทดสอบสิ่งนี้บน VM ด้วยการรูทการเขียนทับไฟล์และเปิดโดยรูทในหน้าต่างเทอร์มินัลอื่นและมันก็ประสบความสำเร็จ แต่ฉันสงสัยว่านี่เป็นเพียงเพราะมันเป็นผู้ใช้เดียวกัน

สถานการณ์เฉพาะของฉันจริง ๆ แล้วจะเป็นการรูทการเขียนทับไฟล์ถ้ามีใครบางคนในเครื่อง windows เปิดมันผ่านการแชร์ SMB ปัจจุบันฉันไม่สามารถทดสอบด้วยวิธีนี้

หากมันจะไม่ประสบความสำเร็จเมื่อเปิดไฟล์แล้วจะทำอย่างไรถ้าฉันตั้งค่าเพื่อให้ทุกคนยอมรับผู้ใช้รูทแบบอ่านอย่างเดียว?

ข้อมูลเพิ่มเติมอีกเล็กน้อย:

ฉันกำลังทำงานกับระบบง่าย ๆ ในการสร้างไฟล์ csv ซึ่งมีคำสั่งทั้งหมดของเราสำหรับเดือนที่กำหนดและเพียงเพิ่มไปยังจุดสิ้นสุดของไฟล์เมื่อคำสั่งซื้อใหม่เข้ามาฉันและผู้ใช้รูท (cronjob กำลังเรียกใช้ไฟล์ php) จะ เป็นคนเดียวที่ต้องแก้ไขไฟล์

อย่างไรก็ตามคนอื่น ๆ มองพวกเขาเพื่อค้นหาคำสั่งซื้อเป็นครั้งคราว ในนาทีที่ฉันจะแก้ไขไฟล์ด้วยตนเองและไม่สามารถบันทึกไฟล์เหล่านั้นได้หากมีผู้ใช้อื่นเปิดอยู่ดังนั้นฉันสงสัยว่าฉันจะประสบปัญหาเดียวกันหรือไม่หากไฟล์เหล่านั้นถูกเก็บไว้ในเครื่อง linux ที่ผู้ใช้รูททำการแก้ไข


หลังจากการทดสอบบน Ubuntu cp และ mv จะเขียนทับไฟล์ที่เปิดอยู่รวมถึงไฟล์ที่กำลังเขียน ฉันต้องสมมติว่าพวกเขาไม่ได้ใช้ O_EXCL เมื่อพวกเขาเปิดแหล่งที่มาของไฟล์เป้าหมาย ฉันคิดว่าบรรณาธิการของคุณกำลังทำสิ่งนี้อยู่ โปรแกรมแก้ไขอื่นอาจสามารถเปิดไฟล์ได้ - ถ้าไม่คุณสามารถทำได้ cp FilePath FilePath.tmpแก้ไข FilePath.tmpและ mv FilePath.tmp FilePath.
AFH

คำตอบ:


1

ใช่ cp และ mv จะเขียนทับไฟล์ที่เปิดอยู่ บางทีคุณอาจดูการควบคุมเวอร์ชันด้วย Git หรือคล้ายกัน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.