ฉันจะแสดงรายการไฟล์ที่ป้องกัน / จากการถูกประกอบใหม่เป็นอ่านอย่างเดียวได้อย่างไร
A) fuserสามารถพบได้ในpsmiscแพ็คเกจ; เป็นกรณีการใช้งานที่ฉันพบนี้ส่องสว่างและเป็นประโยชน์มากกว่าfuserlsof
# 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