web-dev-qa-db-ja.com

システムとユーザー構成を永続的に変更せずに、Nautilusファイルシステムの自動マウントを一時的に一時停止するにはどうすればよいですか?

ファイルを挿入すると、ファイルを自動的にフォーマットしてUSBフラッシュドライブにコピーするツールを作成しました。フォーマットするには、ドライブをアンマウントする必要があります。

通常、Nautilusは挿入時にドライブを自動的にマウントするため、これが発生するのを待ってから、ドライブをアンマウントしてからフォーマットする必要があります。唯一の問題は、ユーザーが自動マウントを無効にした場合、私のプログラムは永久に待機することです。

プログラムの開始時にdconfの自動マウント設定を変更し、終了時に元に戻すこともできますが、プログラムがクラッシュすると設定が復元されないため、これは適切な解決策ではありません。

プログラムの実行中にのみNautilusがUSBドライブを自動マウントしないようにするにはどうすればよいですか?

6
Alistair Buxton

PROGRAMを使用して、プログラムが実行されているかどうかを確認し、そのUDEVルールをアクティブ化できます。実行されていない場合は、pgrepが正常に返されないため無効になります。

[〜#〜]プログラム[〜#〜]

プログラムを実行して、一致するものがあるかどうかを判断します。 プログラムが正常に戻った場合、キーはtrueです。デバイスのプロパティは、環境内で実行されたプログラムで使用できるようになります。プログラムの標準出力は、RESULTキーで使用できます。

これは、非常に短期間のフォアグラウンドタスクにのみ使用できます。詳細については、RUNを参照してください。

ソース:man udev

  1. 新しいルールファイルを追加する

    /etc/udev/rules.d/90-prevent-auto-mount.rules

    ACTION=="add", KERNEL="sd[a-z][0-9]*", DRIVERS=="usb-storage", PROGRAM="/usr/bin/pgrep yourprogramname", ENV{UDISKS_IGNORE}="1"
    
  2. ルールのリロード

    Sudo control --reload-rules
    

ところで、udisk2は自動マウントを担当します

1
user.dz

更新:「システムに永続的な変更を加えずに」という最も重要な仕様を無視しました。それでも解決できると思いますが、デスクトップセッションのライフサイクルやデスクトップイベントの処理に関する詳細な調査が必要です。それは私の専門知識ではありません。 ;)

明らかに、あなたは問題の機能をオフにする方法をすでに知っています。プログラムがクラッシュしても元に戻らないことが心配な場合は、2つの可能性しかありません。プログラムがクラッシュしないように注意するか、プログラムが実行されていないときにプログラムを監視して機能を元に戻すプログラムをプログラムします。

しかし、おそらく別の解決策があります。次のような行を/etc/fstabに追加できます。

LABEL=somemagic /path ntfs noauto,user 0 0

次に、ドライブ上のファイルシステムにそのラベルが付いている場合、自動マウント機能の影響を受けずに、邪魔されずに(u)マウントできます。詳細については、man mountおよびman fstabを参照してください。 LABELの代わりにUUIDを使用することもできますが、それはユースケースとファイルシステムによって異なります。

0
Johannes