Linuxのマウント/アンマウントイベントにフックする


9

Linuxでマウント後およびマウント解除前のスクリプトを提供する方法はありますか?
マウント時およびアンマウント前に(たとえば、同期のために)ストレージメディアでスクリプトを実行しようとしています。

助けてくれてありがとう。


ファイルシステムはどのようにマウントされていますか?物事は自動的にマウントされていません。おそらく、マウントを実行しているプログラム/ツールがあります。それが何であるかを判断し、それを置き換えるか修正する必要があります。
Zoredache

私の場合は、通常、(実際のマウントコマンドを担当するコンポーネントを知らない、イルカであると思われる)KDEサブシステムを使用
イェルクHaubrichs

1
uDevまたはHALevtを使用した自動マウントの処理について、別の質問への回答で書きました。これらはKDEまたはGVFSサブシステムの代わりになるものですが、手順によって、どこを見ればよいかがわかる場合があります。Dbusマウント(カーネルレベルではなくデスクトップ/ユーザースペース)を利用したいようです。
Quack quixote、

回答:


2

/sbin/mountand /sbin/umountコマンドを呼び出す人のためにこれを行おうとしている場合、両方のためのラッパープログラムを作成し、これらのラッパープログラムに必要なものをプログラムするだけです。

/sbin/mount実際の/sbin/mount/sbin/mount-realまたはのような名前に変更された/sbin/umount-real)を呼び出すラッパープログラムに置き換えるラッパープログラム。誰かが実際のプログラムを呼び出せないようにするには、グループ権限を使用してそれを制限し、ラッパープログラムにSGIDビットを設定します。

mount(2)ライブラリの呼び出しを修正しようとしている場合、これは努力であり、おそらく困難であり、特に起動時とシャットダウン時に内部システムの処理に問題を引き起こす可能性があるため、おそらくお勧めできません。

ラッパープログラムを使用する場合でも、システムの干渉を回避して適切な調整を行うために、徹底的にテストする必要があるでしょう。


複数のプログラムがこれを行うとしたら、非常に悪いアドバイスとメンテナンスの恐怖。この方法で始めないでください。
Lothar

0

おそらくunotifyカーネルフックを使用できますが、ディレクトリがマウント解除される前にinotifyイベントが送信されるかどうかわからないため、アンマウント前のイベントをキャッチするのは非常に難しい場合があります。


2
inotifyは、ディレクトリが作成されたことを通知します(例:/mediaまたはの下/mnt)。ただし、そのディレクトリにファイルシステムがマウントされている場合は通知されません。
Craig McQueen

0

おそらく永久に機能する最も簡単な解決策は、/etc/mtabまたはをポーリングすること/proc/mountsです。そのファイルに変更が加えられると、何かがマウントまたはマウント解除されたことを意味します。次に、目的のデバイスをそこで確認する必要があります。

Udevは、デバイスが接続されているかどうかを通知するだけなので、最適なソリューションではありません。デバイスが実際にマウントされているかどうかはわかりません。これはときどき機能するかもしれませんが、ある時点で壊れて髪が抜けるハックソリューションです。


「ハッキー」は通常、ほとんどの状況で十分です。現実の世界は「ハッキー」なソリューションによって運営されています。それがわからない場合は、コンピュータシステムを使用した実際の経験はありません。あなたの意見を自分に保存し、事実に固執してください。ありがとう。
natxo asenjo 2015

1
@natxoasenjoが良い開発者と悪い開発者がいる理由です。
ピティコス2015

実世界での経験がありましたら、またお越しください。あなたが提案するのは、ファイルをポーリングするスクリプト/プログラムを書くことであり、それは十分にテストされたAPIをudevとして使用するよりも良い考えだと思います。悪い開発者は誰ですか?;-)
natxo asenjo 2015

ちなみに、udevルールを記述しても、開発者、せいぜいコンピュータのシステム管理者にはなりません。
natxo asenjo 2015

1
@natxoasenjoハックなソリューションが原因で「現実世界」のプログラムが常に壊れていることがわからない場合は、盲目であるか、「現実世界での経験」がないことになります。Udevは問題なく動作しますが、マウントおよびアンマウントとは関係ありません。そして、これをプログラマーについてのフォーラムスレッドにするのをやめてください。誰の助けにもなりません。
ピティコス2015

0

そのためのudevルールを作成できます。私は、USBドライブに自動的にデータをバックアップするために、このようなものを使用しました。楽しいもの。


1
ただし、udevにはマウント/マウント解除のイベントがないようです。デバイスを接続/切断したときに発生します。そして、あなたのリンクは機能しません..
Pithikos

それは4年前に答えられました。私はそのサイトについて責任を負いません。しかし、archive.orgを見ることができます...はい、それはまだそこにあり、それが読者の演習として残されることがわかります。udevに関するコメントについては、udevを使用すると、ルールを記述し、ルールが一致したときにアクションを実行できます。必要なのはそれだけです。
natxo asenjo 2014

2
問題は他の人々が問題につまずくのを助けることです、それはポイントや他のエゴブーストについてではありません。ユーザーがそのようなトラブルをすべて経験しても、解決策は古くなっています。したがって、あなたは人々の時間を無駄に費やしています(あなたが持っている1-2の賛成票を除いて)。
ピティコス14

2
@natxoasenjo他のユーザーは正しいので、リンクが機能しなくなった場合に回答がスタンドアロンになるように、リンクされたリソースから十分な情報を引用または言い換えることをお勧めします。ここでの良い答えは、実際にマウント/アンマウントの前後にスクリプトを実行するudevルールを作成する方法の例を示しているでしょう。
nhinkle 2015

1
@natxoasenjo無関係なユーザーがあなたのコメントに失礼または失礼なフラグを付けたため、投稿にアクセスしました。Stack Exchangeは、回答に対する特定の期待を持っています。その1つは、外部ソースへのリンク以上のものを含める必要があることです。あなたの答えはその要件を満たしていません。良い答えを求めるStack Exchangeの期待と一致しない「完全に正常」なものについて意見があります。How to Answerをお読みください。
nhinkle 2015
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.