Estoy buscando una manera rápida de encontrar el punto de montaje del sistema de archivos que contiene un ARCHIVO dado. ¿Hay algo más simple o más directo que mi solución a continuación?
df -h FILE |tail -1 | awk -F% '{print $NF}' | tr -d ' '
Una pregunta similar " ¿Hay un comando para ver dónde está montado un disco? " Utiliza el nodo del dispositivo del disco actual como entrada, y no un archivo arbitrario del disco ...
shell
filesystems
mount
Stu
fuente
fuente

trllamada final usandoawk -F'% '...Respuestas:
Podrías hacer algo como
o incluso
Dado que se
awkdivide en espacios en blanco de forma predeterminada, no es necesario especificar el-Fy tampoco es necesario recortar el espacio en blancotr. Finalmente, al especificar el número de línea de interés (NR==2) también puede eliminarlotail.fuente
-Pderecho? En todos los casos, el último campo impreso porawkdebería ser el disco.-Popción que Gilles acaba de agregar.-P. Sin embargo, recomiendo usar siempre-Pcuando esté analizando la salida dedf, es más fácil que verificar que este uso en particular sea seguro.mount | grep " on $(df -P ${FILE} | awk 'END{print $NF}') type" | awk '{print $1}'En GNU / Linux, si tiene GNU
statde coreutils 8.6 o superior, puede hacer lo siguiente:De otra manera:
Su enfoque es válido, pero supone que el punto de montaje no contiene espacios,%, nueva línea u otros caracteres no imprimibles, puede simplificarlo ligeramente con las versiones más nuevas de GNU
df(8.21 o superior):fuente
dfno reconoce la--outputopción.df> = 8.21.Para Linux tenemos findmnt de util-linux hecho exactamente para esto
Tenga en cuenta que se puede devolver algún tipo de punto de montaje aleatorio en caso de que haya varios montajes de enlace. Usar
dftiene el mismo problema.fuente
Como
statdevuelve un campo "Dispositivo", tenía curiosidad por ver cómo lastat()llamada a la biblioteca subyacente podría usarse para obtener esta información mediante programación de una manera compatible con POSIX.Este fragmento de código C:
Le dará las ID de los dispositivos principales y secundarios para el dispositivo que contiene el archivo que figura en la línea de comando (
argv[1]). Desafortunadamente,major()yminor()no son POSIX, aunque la página del manual afirma que están "presentes en muchos otros sistemas" además de GNU / linux.A continuación, puede obtener una correspondencia entre el número mayor / menor del dispositivo y el nodo del dispositivo, por ejemplo
/proc/diskstats, y asignarlo para montar puntos desde/proc/mounts, también conocido como./etc/mtab.Entonces, una utilidad de línea de comandos para hacer esto sería bastante simple.
fuente
/proc/diskstatses solo para dispositivos de bloque, perderá el NFS, el proceso, el fusible ... Al menos en Linux, diferentes puntos de montaje pueden tener el mismo maj + minst_devno puede proporcionar una manera de distinguir una partición NFS de otra. Quien realmente quiera escribir esto tendrá que tenerlo en cuenta;)Aquí hay más código de C ++ si desea hacer esto desde C ++ ...
Más enlaces para formas programáticas
fuente