เชื่อมต่อเข้ากับ linux mount / umount events


9

มีวิธีในการให้สคริปต์หลังการติดตั้งและ pre-umount ใน Linux?
ฉันพยายามที่จะทำสคริปต์บางอย่างบนสื่อเก็บข้อมูลเมื่อติดตั้งและก่อนที่จะติดตั้ง (เช่นสำหรับการซิงค์)

ความช่วยเหลือใด ๆ ชื่นชม


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

ในกรณีของฉันโดยปกติฉันใช้ระบบย่อยของ KDE (สมมุติว่าเป็น Dolphin ไม่ทราบว่าส่วนประกอบใดรับผิดชอบต่อคำสั่ง mount จริง)
Jörg Haubrichs

1
ฉันเขียนเกี่ยวกับการจัดการ automount กับ uDevหรือHALevtเพื่อตอบคำถามอื่น สิ่งเหล่านั้นจะเป็นการแทนที่สำหรับระบบย่อย KDE หรือ GVFS แต่ขั้นตอนอาจให้แนวคิดบางอย่างเกี่ยวกับตำแหน่งที่จะดู ดูเหมือนว่าคุณต้องการแตะลงในเมานต์ Dbus (เดสก์ท็อป / ผู้ใช้มากกว่าระดับเคอร์เนล)
ต้มตุ๋น quixote

คำตอบ:


2

หากคุณกำลังพยายามทำสิ่งนี้สำหรับผู้ที่เรียกใช้คำสั่ง/sbin/mountและ/sbin/umountคำสั่งสิ่งที่คุณต้องทำคือทำโปรแกรม wrapper สำหรับทั้งสองและโปรแกรมสิ่งที่คุณต้องการในโปรแกรม wrapper เหล่านี้

โปรแกรม wrapper ที่ถูกแทนที่/sbin/mountด้วยโปรแกรม wrapper ที่เรียกจริง/sbin/mount(เปลี่ยนชื่อเป็นบางสิ่งเช่น/sbin/mount-realหรือ/sbin/umount-real) เพื่อป้องกันไม่ให้ใครเรียกโปรแกรมจริงให้ใช้สิทธิ์กลุ่มเพื่อ จำกัด และตั้งค่าบิต SGID บนโปรแกรมตัดคำ

หากคุณกำลังมองหาการแก้ไขการmount(2)เรียกใช้ไลบรารีนั่นเป็นความพยายามและอาจเป็นเรื่องยากและอาจไม่แนะนำเนื่องจากอาจทำให้เกิดปัญหาในการประมวลผลระบบภายในโดยเฉพาะในช่วงเริ่มต้นและปิดระบบ

แม้จะมีโปรแกรมห่อหุ้มคุณอาจต้องทดสอบอย่างละเอียดเพื่อหลีกเลี่ยงการรบกวนของระบบและทำการปรับเปลี่ยนที่เหมาะสม


คำแนะนำที่แย่มากและการบำรุงรักษาที่น่ากลัวถ้ามีหลายโปรแกรมที่จะทำเช่นนี้ อย่าเริ่มต้นด้วยวิธีนี้
Lothar

0

คุณอาจใช้inotify kernel hook แม้ว่าเหตุการณ์ pre-unmount อาจเป็นเรื่องยากมากที่จะตรวจจับเนื่องจากฉันไม่แน่ใจว่ามีเหตุการณ์ inotify ที่ส่งก่อนที่จะติดตั้งไดเรกทอรี


2
inotify จะบอกคุณว่ามีการสร้างไดเรกทอรี (เช่นใต้/mediaหรือ/mnt) แต่ไม่ใช่ว่าระบบไฟล์นั้นถูกเมาท์บนไดเรกทอรีนั้น
Craig McQueen

0

วิธีการแก้ปัญหาที่ง่ายที่สุดที่อาจจะทำงานตลอดไปเป็นพาสหรือ/etc/mtab /proc/mountsเมื่อมีการเปลี่ยนแปลงไฟล์นั้นหมายความว่ามีบางสิ่งที่ถูกเมานท์หรือไม่ได้เมานต์ จากนั้นคุณต้องตรวจสอบอุปกรณ์ที่คุณต้องการ

Udev ไม่ใช่ทางออกที่ดีที่สุดเพราะเพียงแค่บอกคุณว่าอุปกรณ์เชื่อมต่อหรือไม่ ไม่ได้บอกว่าอุปกรณ์ติดตั้งจริงหรือไม่ บางครั้งอาจใช้งานได้ แต่เป็นวิธีแก้ปัญหาแฮ็กที่บางครั้งจะพังและคุณจะดึงผมออก


"แฮ็ค" มักจะดีพอสำหรับสถานการณ์ส่วนใหญ่ โลกแห่งความเป็นจริงดำเนินการโดยโซลูชั่น "แฮ็ค" หากคุณไม่ทราบว่าคุณไม่มีประสบการณ์ในการใช้งานระบบคอมพิวเตอร์ โปรดบันทึกความคิดเห็นของคุณกับตัวเองและยึดติดกับข้อเท็จจริง ขอบคุณ
natxo asenjo

1
@natxoasenjo นั่นเป็นสาเหตุที่มีนักพัฒนาที่ดีและนักพัฒนาที่ไม่ดี
Pithikos

โปรดกลับมาอีกเมื่อคุณมีประสบการณ์ในโลกแห่งความเป็นจริง สิ่งที่คุณเสนอคือการเขียนสคริปต์ / โปรแกรมเพื่อสำรวจไฟล์และคุณคิดว่าเป็นความคิดที่ดีกว่าการใช้ API ที่ผ่านการทดสอบอย่างดีเช่น udev ใครคือ developper ที่ไม่ดี? ;-)
natxo asenjo

และโดยวิธีการเขียนกฎ udev ไม่ได้ทำให้คุณเป็นนักพัฒนาซอฟต์แวร์ส่วนใหญ่เป็นคอมพิวเตอร์ของคุณ
natxo asenjo

1
@natxoasenjo ได้ดีถ้าคุณไม่เห็นว่าโปรแกรม "โลกแห่งความจริง" แตกหักอยู่ตลอดเวลาเนื่องจากการแฮ็กโซลูชั่นดังนั้นคุณอาจตาบอดหรือไม่มี "ประสบการณ์ในโลกแห่งความเป็นจริง" Udev ทำงานได้ดี แต่ไม่มีอะไรเกี่ยวข้องกับการติดตั้งและยกเลิกการต่อเชื่อม และโปรดหยุดที่จะเปลี่ยนเป็นฟอรัมเกี่ยวกับผู้ที่เป็นโปรแกรมเมอร์ ไม่ช่วยใครเลย
Pithikos

0

คุณสามารถเขียนกฎ udev เพื่อทำเช่นนั้น ฉันใช้สิ่งนี้เพื่อสำรองข้อมูลโดยอัตโนมัติไปยังไดรฟ์ usb สิ่งที่สนุก.


1
udev ดูเหมือนว่าจะไม่มีเหตุการณ์สำหรับการเมานต์ / เลิกเมานท์ มันจะยิงเมื่อคุณเชื่อมต่อ / ตัดการเชื่อมต่ออุปกรณ์ และลิงก์ของคุณไม่ทำงาน ..
Pithikos

ที่ได้รับคำตอบเมื่อ 4 ปีก่อน ฉันจะไม่รับผิดชอบต่อเว็บไซต์นั้น แต่คุณสามารถดูที่ archive.org ... ใช่มันยังอยู่ที่นั่นค้นหาว่ามันจะถูกทิ้งไว้เป็นแบบฝึกหัดสำหรับผู้อ่าน สำหรับความคิดเห็นของคุณเกี่ยวกับ udev นั้น udev ช่วยให้คุณสามารถเขียนกฎและดำเนินการเมื่อมีการจับคู่ มันคือทั้งหมดที่คุณต้องการ
natxo asenjo

2
ประเด็นก็คือการช่วยคนอื่นให้สะดุดในเรื่องนี้ไม่เกี่ยวกับประเด็นหรือการเพิ่มอัตตาอื่น ๆ ตอนนี้แม้ว่าผู้ใช้จะประสบกับปัญหาทั้งหมดนั้นการแก้ปัญหาก็ล้าสมัย ดังนั้นคุณกำลังเสียเวลาของผู้คนโดยไม่มีประโยชน์ (ยกเว้น 1-2 คะแนนโหวตที่คุณมี)
Pithikos

2
@natxoasenjo ผู้ใช้รายอื่นถูกต้องและนี่คือเหตุผลที่เราสนับสนุนให้มีคำตอบในการอ้างอิงหรือถอดความข้อมูลที่เพียงพอจากแหล่งข้อมูลที่เชื่อมโยงเพื่อให้คำตอบอยู่คนเดียวหากลิงก์ตาย คำตอบที่ดีที่นี่จะแสดงตัวอย่างของวิธีการสร้างกฎ udev เพื่อเรียกใช้สคริปต์ก่อน / หลังการติดตั้ง / ถอนติดตั้ง
nhinkle

1
@natxoasenjo ฉันไปที่โพสต์เนื่องจากความคิดเห็นของคุณถูกตั้งค่าสถานะโดยผู้ใช้ที่ไม่เกี่ยวข้องว่าเป็นคนหยาบคายหรือไม่สุภาพ Stack Exchange มีความคาดหวังบางอย่างสำหรับคำตอบซึ่งหนึ่งในนั้นคือพวกเขาจะต้องมีมากกว่าลิงค์ไปยังแหล่งภายนอก คำตอบของคุณไม่ตรงตามข้อกำหนดนั้น คุณมีความเห็นว่าอะไรคือ "สมบูรณ์แบบที่สุด" ซึ่งไม่ตรงกับความคาดหวังของ Stack Exchange สำหรับคำตอบที่ดี กรุณาใช้เวลาในการอ่านวิธีการตอบ
nhinkle
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.