Soy nuevo en los scripts ... Puedo hacer cosas muy básicas, pero ahora necesito una mano.
Tengo un sistema de archivos local que solo se montará cuando necesite hacer una copia de seguridad.
Estoy empezando con esto.
#!/bin/bash
export MOUNT=/myfilesystem
if grep -qs $MOUNT /proc/mounts; then
echo "It's mounted."
else
echo "It's not mounted."; then
mount $MOUNT;
fi
Como dije, soy muy básico en las secuencias de comandos. Escuché que puedes verificar el estado del mount
comando mirando los códigos de retorno.
RETURN CODES
mount has the following return codes (the bits can be ORed):
0 success
1 incorrect invocation or permissions
2 system error (out of memory, cannot fork, no more loop devices)
4 internal mount bug
8 user interrupt
16 problems writing or locking /etc/mtab
32 mount failure
64 some mount succeeded
No sé cómo verificar eso. ¿Alguna orientación?
bash
shell-script
mount
maniat1k
fuente
fuente
; then
en tu guión.Respuestas:
Puede verificar el código de estado
mount
y los ejecutables más bien escritos con el parámetro especial de shell?
.De
man bash
:? Expands to the exit status of the most recently executed foreground pipeline.
Después de ejecutar el
mount
comando, la ejecución inmediataecho $?
imprimirá el código de estado del comando anterior.No todos los ejecutables tienen códigos de estado bien definidos. Como mínimo, debe salir con un código de éxito (0) o error (1), pero ese no es siempre el caso.
Para ampliar (y corregir) su script de ejemplo, agregué una
if
construcción anidada para mayor claridad. No es la única forma de probar el código de estado y realizar una acción, pero es la más fácil de leer cuando se aprende.Para obtener más información sobre "Estado de salida y salida", puede consultar la Guía avanzada de secuencias de comandos Bash .
fuente
$MOUNT
. Este script también se romperá si el sistema de archivos tiene algún carácter que se someterá a la división de palabras (espacios, etc.). Usted debe siempre citar sus expansiones.Muchas distribuciones de Linux tienen el
mountpoint
comando. Se puede usar explícitamente para verificar si un directorio es un punto de montaje. Tan simple como esto:fuente
Una forma más:
fuente
findmnt
debe suministrarse con el parámetro--source encfs
; de lo contrario, siempre considerará que el directorio se debe montar, ya que recae en el montaje principal.La forma más fácil que no requiere root es:
o para ver si no está montado:
fuente
mount
comando no necesita acceso a la raíz,df
se centra en el espacio del disco, no en los puntos de montaje ...Declaraciones cortas
Compruebe si está montado :
Verificar si no está montado :
fuente
He intentado con el siguiente script
La única entrada que necesita dar es el nombre del sistema de archivos
fuente