bash 스크립트에 마운트 된 노틸러스 파티션 표시 방지 $target/home 나는 마운트가 노틸러스

내 bash 스크립트에서 파티션을 마운트하고 확인하고 파일을 복사하고 마운트 해제합니다. 스크립트가 파티션을 마운트하면 노틸러스는 파티션과 스틸 포커스를 보여주는 창을 띄웁니다. 이것은 내가 피하고 싶은 것입니다.

참고 : 시스템 설정, 세부 정보, 이동식 미디어 에서이 동작을 변경할 수 있다는 것을 알고 Never prompt or start programs on media insertion있지만 USB 스틱이 연결된 경우 동작을 변경하고 싶지 않습니다. 내 bash 스크립트에서 방지하고 싶습니다. . 이 스크립트는 다른 사용자의 컴퓨터에서 실행되기 때문에이 설정을 스크립트에서 수정할 수 없습니다. 스크립트가 비정상적으로 종료되면 수정 된 설정이 그대로 유지됩니다 (이 작업이 필요하지 않다고 생각합니다).

실제로이 자동 디스플레이는 일관성이없는 것 같습니다. 터미널에서 정확히 동일한 명령을 수행하면 노틸러스가 표시되지 않으며 스크립트에 표시되지 않은 다른 마운트가 있음을 알고 있습니다. 이 문제의 원인은 무엇입니까? 다음은 코드의 예입니다 (둘 다 별도의 노틸러스 창이 팝업 됨).

mount $dev $target
mkdir -p $target/home
mount $homedev $target/home

나는 마운트가 노틸러스 신호를 보내는 프로세스와 왜 이런 일이 발생하는지 이해하고 싶습니다 (터미널에서 파티션을 마운트하지 않으면). 그리고 이것을 방지하는 가장 좋은 방법은 무엇입니까?

릴리스 11.10부터이 동작이 시작되었습니다 (정확하게 리콜하는 경우). 현재 12.04를 실행하고 있지만 지원되는 모든 릴리스에서 스크립트가 작동해야합니다. 솔루션에 시스템 설정 수정이 필요하다고 생각하지 않습니다 (릴리스에 따라 다를 수 있음). 예를 들어, os-prober와 같은 파티션을 마운트하는 다른 것을 보면 다른 파티션을 마운트 할 때 노틸러스 창이 나타나지 않습니다.

스크립트는 여기 에서 찾을 수 있습니다 . 그리고 여기 노틸러스가 터지는 부분 입니다. 나는 또한 여기 에 팝업 생각 하지만, 나는 첫 번째 링크에 내 테스트를 집중하고 있습니다. 이것은 다른 마운트 전에 호출되지 않는 곳입니다. 첫 번째 것을-읽기 전용으로 if 문 내에서 다시 작성했는데 아무런 차이가 없습니다.

이상적으로는 왜 이런 일이 발생하는지, 어떻게 방지하는지, 즉 스크립트 내 mount에서 터미널에서 발행 된 것과 다르게 취급 되는 이유를 설명 할 것 입니다. 모든 데스크탑 환경 (ubuntu, kubuntu, xubuntu, lubuntu 등)을 지원할 수있는 완전히 설명 된 솔루션이고 실용적인 경우에도 좋은 해결 방법을 사용할 수 있습니다. 또한 검증을위한 테스트의 기하 급수적 인 증가를 피하고 싶습니다.

미리 감사드립니다

============

papashou 의 링크에 따른 솔루션 :

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
}

이것은 원하는 결과를 달성하지만 쇠 망치 접근과 같은 느낌입니다. udev에는 파티션을 마운트 할 때 팝업되지 않고 노틸러스 (및 다른 파일 브라우저)에서 파티션을 계속 표시 할 수있는 미세 조정이 있다고 생각합니다. 그런데 누군가가 이것을 시도하고 싶다면 다음 스크립트는 노틸러스의 팝업 효과를 보여줍니다.

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

나는 계속 플레이 할 udev것이고 마운트 할 때 삽입 된 USB / 미디어 카드처럼 작동하도록 삽입되지 않은 파티션에 대해서는 의미가 없으므로 버그를 제출했습니다 . 또한 udevadm trigger(최소 12.04에) 모든 것을 일시적으로 고정시키는 저렴한 작업은 아닙니다.

그래서 요약하면, 나는 실행 가능하거나 확실하지 않은 실행 가능한 솔루션 (도움을 준 모든 사람에게 감사)을 가지고 있습니다. 그러나 나는 다른 것을 계속 찾을 것입니다. 감사



답변

이 제안을 시도하십시오 : http://www.worldofnubcraft.com/969/hide-your-disks-or-partitions-from-nautilus/

나는 그것이 udev 신호 및 처리와 관련이 있다고 확신합니다.


답변

스크립트를 래핑하십시오.

#!/bin/bash
#

# disable nautilus automount
#
gconftool --type Boolean --set /apps/nautilus/preferences/media_automount  false

# put your script here  
#
...

# enable back nautilus automount
# 
gconftool --type Boolean --set /apps/nautilus/preferences/media_automount  true

테스트를 거치지 않았으므로 10.04에 있습니다.

최신 정보:

#!/bin/bash
#

# disable nautilus automount
#
gconftool --type Boolean --set /apps/nautilus/preferences/media_automount  false

# put CALLING your script here to survive its crashes
#
/bin/bash -c "/whenever/it/is/placed/script.sh"

# enable back nautilus automount
# 
gconftool --type Boolean --set /apps/nautilus/preferences/media_automount  true


답변

새로운 udev 규칙을 추가하여 플래시 드라이브 자동 마운트를 방지 할 수 있습니다. 이 규칙에서 공급 업체, 일련 번호 및 기타 속성으로 플래시 드라이브를 지정할 수 있습니다. 다음 출력에서 ATTRS {} 행을 참조하십시오 .

udevadm info -a --name=sdb1

이 스크립트 는 특수 파일 이름 (예 : 81-usb-wubi-move.rules) 으로 /etc/udev/rules.d 폴더에
배치해야합니다.

규칙은 다음과 같습니다

ACTION=="add", KERNEL=="sdb?", SUBSYSTEMS=="usb", ATTRS{serial}=="001CC07CEE5EFB91C91B235C", ENV{UDISKS_PRESENTATION_HIDE}="1", ENV{UDISKS_PRESENTATION_NOPOLICY}="1"

또한보십시오:


답변

테스트되지 않은 …. 그냥 직감.

노틸러스 사용자가 액세스 할 수없는 트리에 파일 시스템을 마운트하십시오 (예 : / root 또는 / home / someoneelse의 서브 디렉토리 또는 다른 사람이 소유하고 보안하는 / tmp 서브 디렉토리)

동일한 하드웨어 장치를 두 개의 마운트 지점에 마운트하고 둘 다에서 수정하는 것은 좋지 않을 수 있습니다.

(12.04beta) Ubuntu-> System Settings-> Details-> Removable Media에서 일부 사람 구성이 가능합니다. 일부 옵션은 “아무것도하지 않음”으로 설정되어 팝업을 피할 수 있습니다.

https://help.ubuntu.com/community/Mount/USB 의 설명서는 9.10에 유용하지만 12.04에서는 작동하지 않습니다. 언급 한 gconf-editor의 키는 더 이상 사용되지 않습니다.


답변

시도 mount-n-i플래그.


답변