Date: Thu, 28 Aug 2008 11:41:51 +0700 (ICT) From: Olivier Nicole <on@cs.ait.ac.th> To: freebsd-questions@freebsd.org Subject: How to use automount daemon (amd) Message-ID: <200808280441.m7S4fp7O015836@banyan.cs.ait.ac.th>
next in thread | raw e-mail | index | archive | help
Hi, I have the following issue with amd. I want to write a script that will detect whenever a USB disk is plugged in and then run a backup. My configuration is described below. File /etc/amd.map: /defaults type:=host;fs:=${autodir}/${rhost};rhost:=${key} * opts:=rw,grpid,resvport,nfsv2 localhost type:=auto;fs:=${map};pref:=${key}/ localhost/da0 type:=program;fs:=/automnt/da0;\ mount:="/usr/local/sbin/fsck_mount fsck_mount /automnt/da0";\ unmount:="/usr/local/sbin/spin_down spin_down /automnt/da0" where fsck_mount is a short script that does a fsck_ffs -p, to catch unclean file system) then a mount and spin_down a script that does umount then camcrontrol stop. file /etc/fstab: /dev/da0s1d /automnt/da0 ufs rw,noauto 0 0 And amd runs with the parameters: /usr/sbin/amd -p -a /.amd_mnt -l syslog /host /etc/amd.map When I play with mounting and dismounting the USB disk by hand, it works fine: - I attach the USB disk, wait for usbd to detect umass and create the disk da0 - I access to /host/localhost/da0 - I launch my backup by hand. - I amq -u /host/localhost/da0 to umount the disk da0 - I remove the USB drive. All this is OK. But I would like my backup script to be able to check whether the USB disk is present or not. If I try to access /host/localhost/da0 while the USB disk is not attached, I get no error (ls /host/localhost/da0 returns empty). Then I attach the USB disk and wait for it to start. Then try to ls again but it still gives me nothing. Mount will not show that /automnt/da0 is mounted. It seems that if I try to access /host/localhost/da0 when there is no corresponding disk, amd remembers that error and refuse to mount the disk later until the cache is cleared. The command amq -m shows: "root" amanda:(pid1290) root 1 localhost is up /etc/amd.map /host toplvl 1 localhost is up /etc/amd.map /host/localhost auto 1 localhost is up fsck_mount /automnt/da0 /automnt/da0 program 1 localhost is up where /automnt/da0 seems to be mounted even when there is no such disk. I think that if my backup script tries to check /host/localhost/da0 with a period (every 10 minutes) greater than amd cache timeout (default 5 minutes), then it should be able to detect when the disk is mounted the next time. I could reduce the cache time out too, but that may interfeer with the efficiency of amd. I wonder if there is a different way to check that the disk is available, than trying to ls /host/localhost/da0. A side question about rpcbind. I'd like to start rpcbind to bind only to localhost. I tried: /usr/sbin/rpcbind -h 127.0.0.1 which works but with the error: rpcbind: cannot bind 127.0.0.1 on udp: Address already in use Is there a way to start rpcbind on localhost only? Best regards, Olivier
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200808280441.m7S4fp7O015836>