리눅스 마운트 / 마운트 이벤트에 연결


8

Linux에서 post-mount 및 pre-umount 스크립트를 제공하는 방법이 있습니까?
마운트 할 때와 마운트 해제하기 전에 (예 : 동기화를 위해) 저장 매체에서 일부 스크립트를 작성하려고합니다.

도움을 주셔서 감사합니다.


파일 시스템은 어떻게 마운트됩니까? 사물이 자동으로 마운트되지 않을 수 있습니다. 마운트를 수행하는 일부 프로그램 / 도구가 있습니다. 그것이 무엇인지 판별하고 교체하거나 수정해야합니다.
Zoredache

필자의 경우에는 일반적으로 KDE 하위 시스템을 사용합니다 (아마도 Dolphin, 실제 마운트 명령을 담당하는 구성 요소를
모름

1
나는 자동 마운트 처리에 대해 쓴 udev에와 또는 HALevt와를 또 다른 질문에 대한 답변에서. 그것들은 KDE 또는 GVFS 서브 시스템을 대체 할 것이지만, 절차는 어디를 볼지에 대한 아이디어를 줄 수 있습니다. Dbus 마운트 (커널 레벨이 아닌 데스크탑 / 사용자 공간)를 사용하려는 것 같습니다.
quck quixote

답변:


2

/sbin/mountand /sbin/umount명령을 호출하는 사람들을 위해이 작업을 수행하려는 경우 두 랩퍼 프로그램을 작성하고 원하는 랩퍼 프로그램에 프로그램을 작성하기 만하면됩니다.

래퍼 프로그램 /sbin/mount은를 실제를 호출 하는 래퍼 프로그램으로 대체합니다 /sbin/mount( /sbin/mount-real또는 로 이름이 바 /sbin/umount-real)). 다른 사람이 실제 프로그램을 호출하지 못하게하려면 그룹 권한을 사용하여 제한하고 래퍼 프로그램에서 SGID 비트를 설정하십시오.

mount(2)라이브러리 호출 을 수정 하려는 경우, 특히 시작 및 종료 중에 내부 시스템 처리에 문제가 발생할 수 있으므로 노력이 많고 어려우며 바람직하지 않을 수 있습니다.

랩퍼 프로그램을 사용하더라도 시스템 간섭을 피하고 적절히 조정하려면 철저하게 테스트해야합니다.


여러 프로그램이 그렇게하면 매우 나쁜 조언과 유지 보수 공포. 이 방법으로 시작하지 마십시오.
Lothar

0

디렉토리가 마운트 해제되기 전에 전송 된 inotify 이벤트가 있는지 확실하지 않기 때문에 사전 마운트 해제 이벤트가 실제로 포착하기 까다로울 수 있지만 inotify 커널 후크를 사용할 수 있습니다.


2
inotify는 디렉토리가 (예를 들어 /media또는 아래에 /mnt) 생성 되었지만 파일 시스템이 해당 디렉토리에 마운트되어 있지 않다는 것을 알려줍니다.
Craig McQueen

0

아마 영원히 작동하는 것입니다 가장 간단한 해결책은 폴링하는 것입니다 /etc/mtab또는 /proc/mounts. 해당 파일을 변경하면 무언가가 마운트 또는 마운트 해제되었음을 의미합니다. 그런 다음 원하는 장치가 있는지 확인해야합니다.

Udev는 장치가 연결되어 있는지 알려주기 때문에 최상의 솔루션이 아닙니다. 장치가 실제로 마운트되었는지 여부는 말하지 않습니다. 이것은 때로는 효과가 있지만 언젠가는 깨질 것이고 머리카락을 뽑을 수있는 해키 솔루션입니다.


"해키"는 대개 대부분의 상황에 충분합니다. 현실은 "해키"솔루션에 의해 운영됩니다. 모르는 경우 컴퓨터 시스템을 사용한 실제 경험이 없습니다. 의견을 자신에게 저장하고 사실을 고수하십시오. 감사.
natxo asenjo

1
@natxoasenjo 그래서 좋은 개발자와 나쁜 개발자가 있습니다.
Pithikos

실제 경험이 있으면 다시 오십시오. 파일을 폴링하기 위해 스크립트 / 프로그램을 작성하는 것이 좋습니다. 잘 테스트 된 API를 udev로 사용하는 것보다 더 좋습니다. 나쁜 개발자는 누구입니까? ;-)
natxo asenjo

그런데 udev 규칙을 작성한다고해서 대부분 컴퓨터의 sysadmin이 개발자가되는 것은 아닙니다.
natxo asenjo

1
@natxoasenjo 만약 당신이 해킹 솔루션으로 인해 "실제 세계"프로그램이 항상 깨지는 것을 보지 못한다면, 당신은 맹인이거나 "실제 세계 경험"을 가지고 있지 않습니다. Udev는 잘 작동하지만 마운트 및 마운트 해제와 관련이 없습니다. 그리고 누가 프로그래머인지에 대한 포럼 스레드로 바꾸지 마십시오. 아무도 도와주지 않습니다.
Pithikos

0

이를 위해 udev 규칙을 작성할 수 있습니다. 내가 좋아하는 뭔가를 사용한 자동으로 USB 드라이브에 물건을 백업하십시오. 재미있는 것들.


1
udev는 마운트 / 마운트 해제에 대한 이벤트가없는 것 같습니다. 장치를 연결 / 연결 해제 할 때만 발생합니다. 그리고 당신의 연결이 작동하지 않습니다 ..
Pithikos

그것은 4 년 전에 답변되었습니다. 나는 그 사이트에 대해 책임을지지 않습니다. 그러나 당신은 archive.org를 볼 수 있습니다 ... 그렇습니다. 여전히 거기에 있으며 독자를위한 연습으로 남을 것입니다. udev에 대한 의견과 관련하여 udev를 사용하면 규칙을 작성하고 규칙이 일치 할 때 작업을 실행할 수 있습니다. 당신이 필요한 전부입니다.
natxo asenjo

2
요점은 다른 사람들이 문제에 걸려 넘어지는 것을 돕는 것입니다. 요점이나 다른 자존심에 관한 것이 아닙니다. 이제 사용자가 모든 문제를 겪어도 해결책은 오래되었습니다. 따라서 당신은 사람들의 시간을 아무런 이익을 위해 낭비하지 않습니다 (당신이 가지고있는 1-2 개의 투표를 제외하고).
Pithikos

2
@natxoasenjo 다른 사용자가 정확하기 때문에 링크가 죽으면 답변이 독립적으로 될 수 있도록 링크 된 리소스에서 충분한 정보를 인용하거나 문구로 바꾸는 것이 좋습니다. 여기에 좋은 대답은 실제로 마운트 / 마운트 해제 전후에 스크립트를 실행하는 udev 규칙을 만드는 방법의 예를 보여 주었을 것입니다.
닌클

1
@natxoasenjo 귀하의 댓글이 관련없는 사용자에 의해 무례하거나 무례한 것으로 표시되어 게시물을 방문했습니다. Stack Exchange는 답변에 대한 기대치를 가지고 있으며 그 중 하나는 외부 소스에 대한 링크를 포함해야한다는 것입니다. 귀하의 답변이 해당 요구 사항을 충족하지 않습니다. 좋은 답변에 대한 스택 교환 기대치와 일치하지 않는 "완벽하게 훌륭한"항목에 ​​대한 의견이 있습니다. 답변 방법을 읽으 려면 시간이 조금 걸립니다 .
닌클
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.