2011-01-28 15 views
5

df -t nfs directorio $Cómo saber (en sh) si un directorio está montado a través de NFS

declaraciones de dos líneas de salida si el directorio está montado NFS y una línea si no lo es.

Algunas versiones de df dan el código de salida 1 si no se ha montado en NFS, pero GNU coreutils 5.3.0 no ...

if [ `df -t nfs . | wc -l` = 2 ]; 

siente poco elegante y sus colegas dicen que no lo hace verificar lo suficiente para detectar errores. ¿Hay una mejor manera de hacer esto?

+0

He probado algunas opciones, pero la tuya aún parece más elegante para mí. ¿Mencionaron colegas los errores que podrían eludir este método? +1 por un buen intento. –

+0

Bien, encontré un problema. Si la primera columna de salida es excesivamente larga (por ejemplo, 'nfs_server:/long/mount/point'), entonces' df' dividiría la salida en dos líneas y terminaría con 'wc -l = 3'. Se soluciona fácilmente cambiando su solución a 'if [.... -gt 1]'. –

+0

@ShawnChin: si aplica la opción '--portability' /' -P', no se ajustarán las líneas largas. Perfecto para el procesamiento de la máquina. (Probado con 'df (GNU coreutils) 7.4') – RobM

Respuesta

0

Siempre puedes verificar que mtab mantiene un registro de todos los sistemas de archivos montados en un archivo plano, si usas strace y mira eso es todo lo que df hace de todos modos. Supongo que también podrías usar/proc/mounts si estás ejecutando esto en Linux.

+0

El uso de'/etc/mtab' requeriría mucho más análisis/procesamiento. También fallaría si el directorio de destino incluye un enlace sym a un punto de montaje. –

Cuestiones relacionadas