Je suis nouveau dans les scripts ... Je peux faire des trucs très basiques, mais maintenant j'ai besoin d'un coup de main.
J'ai un système de fichiers local qui ne sera monté que lorsque je devrai faire une sauvegarde.
Je commence par ça.
#!/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
Comme je l'ai dit, je suis très basique en script. J'ai entendu dire que vous pouvez vérifier l'état de la mount
commande en consultant les codes retour.
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
Je ne sais pas comment vérifier ça. Des conseils?
bash
shell-script
mount
maniat1k
la source
la source
; then
dans votre script.Réponses:
Vous pouvez vérifier le code d'état
mount
et les exécutables les mieux écrits avec le paramètre spécial shell?
.De
man bash
:? Expands to the exit status of the most recently executed foreground pipeline.
Après avoir exécuté la
mount
commande, l'exécution immédiateecho $?
affichera le code d'état de la commande précédente.Tous les exécutables n'ont pas de codes d'état bien définis. Au minimum, il devrait sortir avec un code de réussite (0) ou d'échec (1), mais ce n'est pas toujours le cas.
Pour développer (et corriger) votre exemple de script, j'ai ajouté une
if
construction imbriquée pour plus de clarté. Ce n'est pas le seul moyen de tester le code d'état et d'effectuer une action, mais c'est le plus facile à lire lors de l'apprentissage.Pour plus d'informations sur "Exit and Exit Status", vous pouvez vous référer au Guide avancé de Bash-Scripting .
la source
$MOUNT
. Ce script se brisera également si le système de fichiers a un caractère qui subirait un fractionnement de mots (espaces, etc.). Vous devez toujours citer vos extensions.De nombreuses distributions Linux ont la
mountpoint
commande. Il peut explicitement être utilisé pour vérifier si un répertoire est un point de montage. Aussi simple que cela:la source
Encore une façon:
la source
findmnt
doit être fourni avec le paramètre--source encfs
, sinon il considérera toujours le répertoire à monter car il revient au montage parent.Le moyen le plus simple qui ne nécessite pas de root est:
ou pour voir s'il n'est pas monté:
la source
mount
commande n'a pas besoin d'un accès root, elledf
se concentre sur l'espace disque et non sur les points de montage ...courtes déclarations
Vérifiez si monté :
Vérifier si non monté :
la source
J'ai essayé avec le script ci-dessous
La seule entrée que vous devez donner est le nom du système de fichiers
la source