In meinem Bash-Skript mounte ich Partitionen, überprüfe sie, kopiere Dateien darauf und hebe die Bereitstellung auf. Wenn das Skript die Partition bereitstellt, wird Nautilus mit einem Fenster angezeigt, in dem die Partition angezeigt wird und der Fokus gestohlen wird. Das möchte ich vermeiden.
Hinweis: Ich weiß, dass ich das Verhalten in den Systemeinstellungen, Details, Never prompt or start programs on media insertion
Wechselmedien ändern kann , aber ich möchte das Verhalten nicht ändern, z. B. wenn ein USB-Stick angeschlossen ist, ich möchte es nur in meinem Bash-Skript verhindern . Da dieses Skript auf den Computern anderer Benutzer ausgeführt wird, kann ich diese Einstellungen (im Skript) nicht ändern, da bei einer abnormalen Beendigung die geänderten Einstellungen beibehalten werden (ich glaube auch nicht, dass dies erforderlich sein sollte).
Eigentlich scheint diese automatische Anzeige nicht konsistent zu sein. Wenn ich genau den gleichen Befehl vom Terminal aus ausführe, wird Nautilus nicht angezeigt, und ich weiß, dass in meinem Skript andere Bereitstellungen nicht angezeigt werden. Was könnte das verursachen? Hier ist ein Beispiel für den Code (beide führen dazu, dass separate Nautilusfenster geöffnet werden):
mount $dev $target
mkdir -p $target/home
mount $homedev $target/home
Ich bin daran interessiert zu verstehen, wie der Mount Nautilus signalisiert und warum dies geschieht (wenn dies nicht der Fall ist, wenn ich die Partition vom Terminal aus mounte). Und was ist der beste Weg, um dies zu verhindern?
Ich habe dieses Verhalten ab Release 11.10 bemerkt (wenn ich mich richtig erinnere). Ich verwende derzeit 12.04, aber das Skript muss auf allen unterstützten Versionen funktionieren. Ich glaube nicht, dass die Lösung das Ändern von Systemeinstellungen beinhalten sollte (die zwischen den Releases unterschiedlich sein können). Wenn Sie sich beispielsweise andere Dinge ansehen, die Partitionen bereitstellen (z. B. os-prober), werden keine Nautilus-Fenster angezeigt, wenn verschiedene Partitionen bereitgestellt werden.
Das Skript finden Sie hier . Und hier ist der Teil, in dem Nautilus auftaucht. Ich denke, dass es auch hier auftaucht , aber ich habe meine Tests auf den ersten Link konzentriert. Hier wird es nicht angezeigt, vor diesen anderen Reittieren aufgerufen. Beachten Sie, dass ich die ersten als - Nur Lesen und innerhalb einer if-Anweisung umgeschrieben habe und es keinen Unterschied macht.
Im Idealfall erklärt die Antwort, warum dies geschieht und wie dies verhindert werden kann, mit anderen Worten, warum das In-Script mount
anders behandelt wird als das von einem Terminal ausgegebene. Eine gute Problemumgehung wird auch akzeptiert, wenn es sich um eine vollständig erläuterte und praktische Lösung handelt, die alle Desktop-Umgebungen (Ubuntu, Kubuntu, Xubuntu, Lubuntu usw.) unterstützt. Ich möchte auch eine exponentielle Zunahme der Tests vermeiden, um dies zu überprüfen.
Danke im Voraus
============
Lösung gemäß Papashou -Link:
add_udev_rules ()
{
for i in "$dev" "$homedev" "$bootdev" "$usrdev"; do
if [ -n "$i" ]; then
block=${i#/dev/}
echo "KERNEL==\"""$block""\",ENV{UDISKS_PRESENTATION_HIDE}=\"1\"" >> "$wubi_move_dir"/wubi_move.rules
fi
done
cp "$wubi_move_dir"/wubi_move.rules /etc/udev/rules.d/wubi_move.rules
udevadm trigger > /dev/null 2>&1
}
remove_udev_rules ()
{
rm /etc/udev/rules.d/wubi_move.rules
rm "$wubi_move_dir"/wubi_move.rules
udevadm trigger > /dev/null 2>&1
}
Dies erzielt das gewünschte Ergebnis, fühlt sich jedoch wie ein Vorschlaghammer an. Ich glaube, es gibt wahrscheinlich eine Feinabstimmung in udev, die es der Partition ermöglicht, weiterhin in Nautilus (und anderen Dateibrowsern) angezeigt zu werden, ohne dass sie beim Mounten auftaucht. Übrigens, wenn jemand dies versuchen möchte, zeigt das folgende Skript den Popup-Effekt von Nautilus:
mkdir -p /tmp/testmount
mount /dev/sda1 /tmp/testmount
sleep 3
umount /dev/sda1
mount /dev/sda1 /tmp/testmount
sleep 3
umount /dev/sda1
mount /dev/sda1 /tmp/testmount
sleep 3
umount /dev/sda1
mount /dev/sda1 /tmp/testmount
sleep 3
umount /dev/sda1
rmdir /tmp/testmount
Ich werde weiter spielen udev
und habe auch einen Fehler gemeldet , da dies für eine Partition, die nicht eingesetzt ist, keinen Sinn macht, sich beim Mounten wie eine eingesteckte USB- / Medienkarte zu verhalten. Auch udevadm trigger
ist dies keine kostengünstige Operation, die (zumindest am 12.04.) Erscheint, um alles vorübergehend einzufrieren.
Zusammenfassend habe ich also eine praktikable Lösung (danke an alle, die mitgeholfen haben), die ich möglicherweise implementieren kann oder nicht (noch nicht sicher); aber ich werde weiter nach etwas anderem suchen. Vielen Dank
Antworten:
Versuchen Sie diesen Vorschlag: http://www.worldofnubcraft.com/969/hide-your-disks-or-partitions-from-nautilus/
Ich bin mir ziemlich sicher, dass es mit udev-Signalen und der Verarbeitung zu tun hat.
quelle
udevadm trigger
. Ich möchte nur bestätigen, dass es im Skript funktioniert. Ich werde die Details in der Frage posten, wenn Sie hier nicht mehr hinzugefügt haben.Versuchen Sie, Ihr Skript zu verpacken:
Nicht getestet, da ich am 10.04 bin
AKTUALISIEREN:
quelle
Sie können die automatische Bereitstellung von Flash-Laufwerken verhindern, indem Sie eine neue udev-Regel hinzufügen. In dieser Regel können Sie ein Flash-Laufwerk anhand seines Herstellers, seiner Seriennummer und anderer Attribute angeben. Siehe ATTRS {} -Zeilen in der Ausgabe von:
Dieses Skript sollten Sie in den Ordner /etc/udev/rules.d mit einem speziellen Dateinamen ablegen , z. B. 81-usb-wubi-move.rules
Die Regel könnte so aussehen
Siehe auch:
quelle
mount
vom Terminal), aber wenn ich eine gute Problemumgehung bekomme, werde ich das auch akzeptieren.Ungetestet ... nur eine Ahnung.
Hängen Sie das Dateisystem in einen Baum ein, auf den der Nautilus-Benutzer nicht zugreifen kann, z. B. in einem Unterverzeichnis von / root oder / home / Someoneelse oder einem / tmp-Unterverzeichnis, das einer anderen Person gehört und von dieser gesichert wird
Beachten Sie, dass es möglicherweise eine schlechte Idee ist, dasselbe Hardwaregerät an zwei Mountpunkten zu mounten und von beiden zu ändern.
Einige menschliche Konfigurationen sind unter (12.04beta) Ubuntu-> Systemeinstellungen-> Details-> Wechselmedien möglich. Einige der Optionen können auf "nichts tun" gesetzt werden, wodurch das Popup möglicherweise vermieden wird.
Die Dokumentation unter https://help.ubuntu.com/community/Mount/USB ist möglicherweise hilfreich für 9.10, funktioniert jedoch nicht mit 12.04. Die genannten Schlüssel für den gconf-Editor werden nicht mehr verwendet.
quelle
chmod 700
das Verzeichnis verwendet ... sah vielversprechend aus und öffnete dann ein Nachrichtenfenster (ohne Fenstertitel): "Ordner für 10-GB-Dateisystem kann nicht geöffnet werden", "Keine Anwendung ist für die Verarbeitung dieser Datei registriert"Versuchen Sie es
mount
mit den-n
und-i
Flags.quelle