Linuxでマウント後およびマウント解除前のスクリプトを提供する方法はありますか?
マウント時およびアンマウント前に(たとえば、同期のために)ストレージメディアでスクリプトを実行しようとしています。
助けてくれてありがとう。
Linuxでマウント後およびマウント解除前のスクリプトを提供する方法はありますか?
マウント時およびアンマウント前に(たとえば、同期のために)ストレージメディアでスクリプトを実行しようとしています。
助けてくれてありがとう。
回答:
/sbin/mount
and /sbin/umount
コマンドを呼び出す人のためにこれを行おうとしている場合、両方のためのラッパープログラムを作成し、これらのラッパープログラムに必要なものをプログラムするだけです。
を/sbin/mount
実際の/sbin/mount
(/sbin/mount-real
またはのような名前に変更された/sbin/umount-real
)を呼び出すラッパープログラムに置き換えるラッパープログラム。誰かが実際のプログラムを呼び出せないようにするには、グループ権限を使用してそれを制限し、ラッパープログラムにSGIDビットを設定します。
mount(2)
ライブラリの呼び出しを修正しようとしている場合、これは努力であり、おそらく困難であり、特に起動時とシャットダウン時に内部システムの処理に問題を引き起こす可能性があるため、おそらくお勧めできません。
ラッパープログラムを使用する場合でも、システムの干渉を回避して適切な調整を行うために、徹底的にテストする必要があるでしょう。
おそらくunotifyカーネルフックを使用できますが、ディレクトリがマウント解除される前にinotifyイベントが送信されるかどうかわからないため、アンマウント前のイベントをキャッチするのは非常に難しい場合があります。
/media
またはの下/mnt
)。ただし、そのディレクトリにファイルシステムがマウントされている場合は通知されません。
おそらく永久に機能する最も簡単な解決策は、/etc/mtab
またはをポーリングすること/proc/mounts
です。そのファイルに変更が加えられると、何かがマウントまたはマウント解除されたことを意味します。次に、目的のデバイスをそこで確認する必要があります。
Udevは、デバイスが接続されているかどうかを通知するだけなので、最適なソリューションではありません。デバイスが実際にマウントされているかどうかはわかりません。これはときどき機能するかもしれませんが、ある時点で壊れて髪が抜けるハックソリューションです。
そのためのudevルールを作成できます。私は、USBドライブに自動的にデータをバックアップするために、このようなものを使用しました。楽しいもの。