ฉันจะแสดงรายการไฟล์ที่ป้องกัน / จากการถูกประกอบใหม่เป็นอ่านอย่างเดียวได้อย่างไร
A) fuser
สามารถพบได้ในpsmisc
แพ็คเกจ; เป็นกรณีการใช้งานที่ฉันพบนี้ส่องสว่างและเป็นประโยชน์มากกว่าfuser
lsof
# fuser -v -m / 2>&1 | grep '[Ff]r.e'
ที่จะแสดงกระบวนการทั้งหมดที่มีไฟล์เปิดบน / สำหรับการอ่าน (f) และการเขียน (F) ไฟล์ที่จะป้องกัน / จากการถูกประกอบใหม่ให้เป็นแบบอ่านอย่างเดียวคือไฟล์ที่เปิดสำหรับการเขียน (F)
ฆ่ากระบวนการที่สามารถเรียกทำงานได้ด้วยไฟล์ไดเรกทอรีรากที่เปิดอยู่เพื่อการเขียนเช่น
# for fupid in $(fuser -v -m / 2>&1 | grep Fr.e | awk '{print $2}'); do kill $fupid; done
ที่อยู่เหนือsystemd
ความคิดเห็นที่มีข้อแม้ หากsystemd
เป็นเช่นinit
นั้นfuser
จะเห็นและมีข้อควรพิจารณาอื่น ๆ ด้วยการsystemd
ทำงานก็สามารถ (อีกครั้ง) fuser
เริ่มต้นกระบวนการด้านหลังของคุณแม้ว่าพวกเขาจะได้รับการระบุเพียงและฆ่าด้วย systemd
สูงกว่าแบบดั้งเดิมsysvinit
มาก
B) UPDATEในคำอธิบายระบุว่าระบบมี ... init
และgetty
ยังคงทำงานอยู่ ...
ฉันเห็นความคิดเห็นที่ระบุว่าระบบไม่ได้ใช้systemd
แต่กำลังใช้งานinit
อยู่ เมื่อวันที่ยืดเป็นsystemd
init
ความคิดเห็นที่ไม่แน่ชัดพูดsysvinit
ดังนั้นฉันสมมติว่าระบบในคำถามที่อาจจะใช้ยืดเริ่มต้นสำหรับsystemd
init
หรือคนอื่นที่สะดุดในโพสต์นี้ที่ใช้ยืดของsystemd
พบว่าส่วนนี้มีประโยชน์
ต่อเดวิกิพีเดีย ,
กระบวนการเริ่มต้นระบบได้รับการจัดการโดย init daemon ในรุ่นบีบและรุ่นก่อนหน้า daemon นั้นมีให้โดยแพคเกจ sysvinit และไม่สนับสนุนตัวเลือกอื่น ในwheezyเริ่มต้น daemon เริ่มต้นยังคงอยู่sysvinit
แต่ "ตัวอย่างเทคโนโลยี" ของ systemd สามารถใช้ได้ ในjessie and stretchระบบ init เริ่มต้นคือsystemd
แต่รองรับการสลับเป็น sysvinit
เนื่องจาก jessie สนับสนุนเฉพาะ systemd เท่านั้น sysvinit ได้รับการสนับสนุนเป็นส่วนใหญ่ แต่แพ็คเกจ Debian ไม่จำเป็นต้องมีสคริปต์เริ่มต้น sysvinit runit ได้รับการจัดทำแพ็กเกจด้วยเช่นกัน แต่ไม่ได้รับการทดสอบและการสนับสนุนในระดับเดียวกันกับที่อื่น ๆ และไม่ได้รับการสนับสนุนเป็น PID 1 ในปัจจุบัน
ด้วยการsystemd
รันมีขั้นตอนเพิ่มเติมไม่กี่ขั้นตอนที่ควรดำเนินการเพื่อเพิ่ม / เพื่อให้สามารถติดตั้งใหม่โดยไม่มีปัญหา
อาจsystem.slice
เป็นไปได้ที่จะเก็บไฟล์ที่เปิดอยู่systemd-journald.service
หรือsystemd-udevd.service
(ซึ่งทั้งคู่มีการขึ้นต่อกันของซ็อกเก็ต) หรือถ้าNetworkManager
ใช้มันสามารถเกิดใหม่ได้dhclient
ซึ่งเขียนสัญญาเช่า/ var / ... (& / var /ไม่ได้เป็นอุปกรณ์ของตัวเองเสมอไป) ฯลฯ fuser
อาจพบ & คุณฆ่าdhclient
แต่NetworkManager
จะเริ่มทำงานทันที
คุณธรรมคือสิ่งต่าง ๆ เป็นแบบอัตโนมัติที่สามารถ 'ต้องการ' / (และยิ่งกว่านั้นอีกมากsystemd
)
เพื่อให้แน่ใจว่าเป็นไปได้systemd
เทียบเท่าระดับการทำงาน 1 จะถูกจับคู่โดยrescue.target
(และrunlevel1.target
เป็นลิงก์สัญลักษณ์ไปยังrescue.target
)
1) เริ่มต้นด้วยการแยกระบบเป็น rescue.target
# systemctl isolate rescue.target
ควรให้คุณป้อนรหัสผ่านรูท ทำตามคำแนะนำบนหน้าจอ
2) ที่กระสุนกู้ภัยค้นหาสิ่งที่ต้องการ /
# systemctl show -p Wants /
โดยทั่วไปแล้วมันsystem.slice
; หยุดทุกสิ่งที่ต้องการ / เช่น
# systemctl stop system.slice
3) ณ จุดนี้จำนวนที่จ่ายใหม่ไม่ควรรายงานmount: / is busy
และmount -o remount,ro /
ควรใช้งานได้ fuser
ถ้าไม่ได้ตรวจสอบอีกครั้งกับ
4) FWIW; ฉันเคยเห็นครั้งเมื่อumount
ล้มเหลวเมื่อ / ถ้าอุปกรณ์อื่นถูกติดตั้งในไดเรกทอรีย่อยของการติดตั้งอื่นเช่นการติดตั้งซ้อนกัน ตัวอย่างเช่นumount /
จะล้มเหลวหาก/ var /หรือ/ boot /อยู่ในอุปกรณ์อื่น (และติดตั้ง) แม้ว่าmount -o remount,ro /
จะยังคงทำงานได้ในกรณีนี้
lsblk
สามารถเป็นประโยชน์ในการมองเห็นการเมาท์แบบซ้อน
เหตุใด lsof + L1 จึงไม่แสดงรายการไฟล์เปิดที่ไม่ได้เชื่อมโยงอีกต่อไป
เนื่องจากไม่สามารถใช้งานได้ (ซ็อกเก็ตหรือ FIFO & ท่อส่วนใหญ่) จึงไม่เปิดไฟล์อีกต่อไป (กระบวนการหลักปิดตัวอธิบายไฟล์) หรือพวกเขา (ยังคง) มีลิงก์มากกว่า 1 รายการ
ผู้ชายlsof (8)รายละเอียด ...
+ | -L [l]
ตัวเลือกนี้เปิดใช้งาน ('+') หรือปิดการใช้งาน ('-') รายการของการนับลิงก์ไฟล์ที่มีให้เช่นที่พวกเขาไม่พร้อมใช้งานสำหรับซ็อกเก็ตหรือ FIFO และท่อส่วนใหญ่
เมื่อ + L ถูกระบุโดยไม่มีหมายเลขต่อไปนี้จำนวนลิงก์ทั้งหมดจะถูกแสดง เมื่อระบุ -L (ค่าเริ่มต้น) จะไม่มีการนับลิงก์ใด ๆ
เมื่อ + L ตามด้วยหมายเลขเฉพาะไฟล์ที่มีการเชื่อมโยงนับน้อยกว่าจำนวนที่จะได้รับการจดทะเบียน (อาจไม่มีตัวเลขตาม -L) ข้อมูลจำเพาะของรูปแบบ '' + L1 '' จะเลือกไฟล์ที่เปิดอยู่ซึ่งไม่ได้เชื่อมโยง ข้อมูลจำเพาะของแบบฟอร์ม+aL1 <file_system>
จะเลือกไฟล์ที่ไม่ได้เชื่อมโยงเปิดบนระบบไฟล์ที่ระบุ
w
หรือu
ในFD
คอลัมน์ของlsof
เอาต์พุตหรือหาF
ในเอาต์พุตของfuser -vm /
ตัวอย่างเช่น ฉันไม่สามารถให้รายชื่อที่ละเอียดถี่ถ้วนแก่คุณได้ คุณอาจต้องการติดตั้งแพ็คเกจneedrestart