adakah cara untuk menyediakan skrip post-mount dan pre-umount di Linux?
Saya mencoba melakukan beberapa skrip pada media penyimpanan saat dipasang dan sebelum umounting (mis. Untuk sinkronisasi).
Bagaimana sistem file di-mount? Hal-hal yang tidak dipasang secara otomatis mungkin Anda memiliki beberapa program / alat yang melakukan mount untuk Anda. Anda perlu menentukan apa itu dan menggantinya atau memperbaikinya.
Zoredache
Dalam kasus saya, saya biasanya menggunakan subsistem KDE (mungkin itu adalah Dolphin, tidak tahu komponen mana yang bertanggung jawab atas perintah mount yang sebenarnya)
Jörg Haubrichs
1
saya menulis tentang penanganan automount dengan uDev atau dengan HALevt dalam menjawab pertanyaan lain. itu akan menjadi pengganti untuk subsistem KDE atau GVFS, tetapi prosedurnya mungkin memberi Anda beberapa ide tentang ke mana harus mencari. sepertinya Anda ingin memanfaatkan Dbus mounts (desktop / userspace daripada level kernel).
quack quixote
Jawaban:
2
Jika Anda mencoba melakukan ini untuk orang-orang yang menjalankan perintah /sbin/mountdan /sbin/umount, yang harus Anda lakukan adalah membuat program wrapper untuk keduanya dan memprogram apa yang Anda inginkan ke dalam program wrapper ini.
Program pembungkus diganti /sbin/mountdengan program pembungkus yang memanggil yang asli /sbin/mount(diganti menjadi sesuatu seperti /sbin/mount-realatau /sbin/umount-real). Untuk mencegah siapa pun memanggil program sebenarnya, gunakan izin grup untuk membatasi dan mengatur bit SGID pada program wrapper.
Jika Anda mencari untuk memperbaiki mount(2)panggilan perpustakaan, baik itu upaya dan mungkin sulit dan mungkin tidak dianjurkan karena ini dapat menyebabkan masalah untuk pemrosesan sistem internal terutama selama startup dan shutdown.
Bahkan dengan program pembungkus Anda mungkin harus mengujinya secara menyeluruh untuk menghindari gangguan sistem dan membuat penyesuaian yang sesuai.
Saran yang sangat buruk dan horor pemeliharaan jika beberapa program akan melakukan ini. Jangan mulai dengan cara ini.
Lothar
0
Anda mungkin dapat menggunakan hook kernel inotify , meskipun pre-unmount event mungkin benar-benar sulit untuk ditangkap karena saya tidak yakin apakah ada event inotify yang dikirim sebelum direktori di-umount.
inotify akan memberi tahu Anda bahwa direktori telah dibuat (misalnya di bawah /mediaatau /mnt), tetapi tidak jika sistem file telah dipasang pada direktori itu.
Craig McQueen
0
Solusi paling sederhana yang mungkin akan bekerja selamanya adalah dengan memilih /etc/mtabatau /proc/mounts. Setelah perubahan pada file itu dibuat, itu berarti bahwa sesuatu telah di-mount atau di-mount. Maka Anda harus memeriksa di sana untuk perangkat yang Anda inginkan.
Udev bukan solusi terbaik karena hanya memberi tahu Anda jika perangkat terhubung. Tidak disebutkan apakah perangkat tersebut benar-benar sudah terpasang atau belum. Ini mungkin bekerja kadang-kadang tetapi ini adalah solusi hacky yang pada titik tertentu akan rusak dan Anda akan mencabut rambut Anda.
"Peretasan" biasanya cukup baik untuk sebagian besar situasi. Dunia nyata dijalankan oleh solusi "hacky". Jika Anda tidak tahu itu maka Anda tidak memiliki pengalaman dunia nyata menggunakan sistem komputer. Harap simpan pendapat Anda untuk diri sendiri dan berpegang pada fakta. Terima kasih.
natxo asenjo
1
@natxoasenjo itu sebabnya ada pengembang yang baik dan pengembang yang buruk.
Pithikos
tolong kembali ketika Anda memiliki pengalaman dunia nyata. Apa yang Anda usulkan adalah menulis beberapa skrip / program untuk mem-polling file dan Anda pikir itu ide yang lebih baik daripada menggunakan api yang teruji dengan baik sebagai udev. Siapa pengembang yang buruk? ;-)
natxo asenjo
dan omong-omong, menulis aturan udev tidak membuat Anda seorang pengembang, paling-paling sysadmin komputer Anda.
natxo asenjo
1
@natxoasenjo baik jika Anda tidak melihat bahwa program "dunia nyata" rusak sepanjang waktu karena solusi peretasan maka Anda buta atau tidak memiliki "pengalaman dunia nyata". Udev berfungsi dengan baik tetapi tidak ada hubungannya dengan pemasangan dan pelepasan. Dan tolong berhenti mengubah ini menjadi utas forum tentang siapa yang merupakan seorang programmer. Tidak membantu siapa pun.
Pithikos
0
Anda bisa menulis aturan udev untuk melakukan itu. Saya telah menggunakan sesuatu seperti ini untuk secara otomatis membuat cadangan barang ke drive usb. Hal menyenangkan.
udev tampaknya tidak memiliki acara untuk mount / unmount. Ini menyala tepat saat Anda menghubungkan / memutuskan perangkat. Dan tautan Anda tidak berfungsi ..
Pithikos
itu dijawab 4 tahun lalu. Saya tidak bertanggung jawab atas situs itu. Tapi Anda bisa melihatnya di archive.org ..., ya, masih ada di sana, dan itu akan dibiarkan sebagai latihan bagi pembaca. Mengenai komentar Anda tentang udev, udev memungkinkan Anda menulis aturan dan menjalankan tindakan saat mereka cocok. Itu yang kamu butuhkan.
natxo asenjo
2
intinya adalah untuk membantu orang lain tersandung masalah ini, ini bukan tentang poin atau dorongan ego lainnya. Sekarang bahkan jika pengguna melewati semua masalah itu, solusi di sana sudah usang. Jadi Anda membuang-buang waktu orang tanpa manfaat (kecuali 1-2 suara yang Anda miliki).
Pithikos
2
@natxoasenjo pengguna lain sudah benar, dan inilah mengapa kami mendorong jawaban untuk mengutip atau mengutip informasi yang cukup dari sumber daya tertaut agar jawaban berdiri sendiri jika tautan mati. Sebuah jawaban yang baik di sini sebenarnya akan menunjukkan contoh cara membuat aturan udev untuk menjalankan skrip sebelum / setelah pemasangan / pelepasan.
nhinkle
1
@natxoasenjo Saya mengunjungi pos karena komentar Anda ditandai oleh pengguna yang tidak terkait sebagai tidak sopan atau tidak sopan. Stack Exchange memiliki harapan tertentu untuk jawaban, salah satunya adalah mereka harus mengandung lebih dari satu tautan ke sumber eksternal. Jawaban Anda tidak memenuhi persyaratan itu. Anda memiliki pendapat tentang apa yang "baik-baik saja" yang tidak sesuai dengan harapan Stack Exchange untuk jawaban yang baik. Silakan luangkan waktu untuk membaca Bagaimana Menjawab .
Jawaban:
Jika Anda mencoba melakukan ini untuk orang-orang yang menjalankan perintah
/sbin/mount
dan/sbin/umount
, yang harus Anda lakukan adalah membuat program wrapper untuk keduanya dan memprogram apa yang Anda inginkan ke dalam program wrapper ini.Program pembungkus diganti
/sbin/mount
dengan program pembungkus yang memanggil yang asli/sbin/mount
(diganti menjadi sesuatu seperti/sbin/mount-real
atau/sbin/umount-real
). Untuk mencegah siapa pun memanggil program sebenarnya, gunakan izin grup untuk membatasi dan mengatur bit SGID pada program wrapper.Jika Anda mencari untuk memperbaiki
mount(2)
panggilan perpustakaan, baik itu upaya dan mungkin sulit dan mungkin tidak dianjurkan karena ini dapat menyebabkan masalah untuk pemrosesan sistem internal terutama selama startup dan shutdown.Bahkan dengan program pembungkus Anda mungkin harus mengujinya secara menyeluruh untuk menghindari gangguan sistem dan membuat penyesuaian yang sesuai.
sumber
Anda mungkin dapat menggunakan hook kernel inotify , meskipun pre-unmount event mungkin benar-benar sulit untuk ditangkap karena saya tidak yakin apakah ada event inotify yang dikirim sebelum direktori di-umount.
sumber
/media
atau/mnt
), tetapi tidak jika sistem file telah dipasang pada direktori itu.Solusi paling sederhana yang mungkin akan bekerja selamanya adalah dengan memilih
/etc/mtab
atau/proc/mounts
. Setelah perubahan pada file itu dibuat, itu berarti bahwa sesuatu telah di-mount atau di-mount. Maka Anda harus memeriksa di sana untuk perangkat yang Anda inginkan.Udev bukan solusi terbaik karena hanya memberi tahu Anda jika perangkat terhubung. Tidak disebutkan apakah perangkat tersebut benar-benar sudah terpasang atau belum. Ini mungkin bekerja kadang-kadang tetapi ini adalah solusi hacky yang pada titik tertentu akan rusak dan Anda akan mencabut rambut Anda.
sumber
Anda bisa menulis aturan udev untuk melakukan itu. Saya telah menggunakan sesuatu seperti ini untuk secara otomatis membuat cadangan barang ke drive usb. Hal menyenangkan.
sumber