#1 Aujourd'hui à 00:29
- iznobe
Amelioration mini-script fsck complet de l' ordi
Bonjour , j ' ai commencé a ecrire quelques lignes pour un script pour faire un fsck .
d' une part je voudrais l' ameliorer , tout en gardant de la lisibilité et de la facilité de compréhension , et surtout , il me manque la derniere partie , pour laquelle je n' ai pas encore trouvé de solution " simple " . je fais donc appel a ceux qui savent meiux gerer que moi .
Voici le script :
iznobe@iznobe-PC:~$ cat Scripts/fsck-total.sh
#!/bin/bash
sudo service nfs-kernel-server stop;
for m in $(findmnt -a --noheadings --output source,fstype | grep ext | cut -d ' ' -f 1); do
sudo umount -v $m;
done
for f in $(lsblk -fe7 -l -o name,fstype | grep ext | cut -d ' ' -f 1); do
sudo fsck -fyv /dev/$f;
echo "";
echo " OK --------------------- OK ";
echo "";
done
# comment remonté les systemes de fichiers demontés dans la 1ere boucle ?
sudo service nfs-kernel-server start
iznobe@iznobe-PC:~$
j ' avais pensé a faire :
for m in $(findmnt -a --noheadings --output source,fstype | grep ext | cut -d ' ' -f 1); do
sudo umount -v $m;
remount=$m++,;
# ou peut etre :
remount++,=$m;
Afin d' obtenir quelquechose du genre : $=/dev/sda1,/dev/sda2, etc ...
done
# fsck
# " decoupage " de la variable remount , puis :
for m in $remount; do
sudo mount -v $m;
done
mais , bien sur , ca ne fonctionne pas
Edit : fini par trouvé :
#!/bin/bash
sudo service nfs-kernel-server stop;
remount="";
for m in $(findmnt -a --noheadings --output source,fstype | grep ext | cut -d ' ' -f 1); do
sudo umount -v $m;
remount=$remount$m" ";
echo "remount ="$remount;
done
il ne reste donc plus que le " decoupage " de la variable a faire avant de faire le mount .
ha , ben apres test , meme pas , ca marche tout seul
------------------------------------------------------------------------------
donc , voici le script a ameliorer le cas echeant :
#!/bin/bash
sudo service nfs-kernel-server stop;
remount=""; # utile cette declaration ?
for m in $(findmnt -a --noheadings --output source,fstype | grep ext | cut -d ' ' -f 1); do
sudo umount -v $m;
remount=$remount$m" ";
done
for f in $(lsblk -fe7 -l -o name,fstype | grep ext | cut -d ' ' -f 1); do
sudo fsck -fyv /dev/$f;
echo "";
echo " OK --------------------- OK ";
echo "";
done
for m in $remount; do
sudo mount -v $m;
done
sudo service nfs-kernel-server start
Dernière modification par iznobe (Aujourd'hui à 01:26)
retour COMPLET et utilisable de commande
MSI Z490A-pro , i7 10700 , 32 GB RAM .
Hors ligne
#2 Aujourd'hui à 04:17
- Watael
Re : Amelioration mini-script fsck complet de l' ordi
plus d'un sudo dans un script indique que le script doit être exécutable par root seulement, et c'est le script que tu exécutes avec sudo
comment se fait-il que tu sois encore avec service et pas systemd ?
tu as l'intention d'exécuter ce script sur ton système en cours de fonctionnement ?! parce que, là, toutes tes partitions extN vont être démontées, et ton système va cesser de fonctionner.
et, non, remount="" n'est pas utile, et tu pourrais faire simplement remount+=$m.
Mais ce n'est pas la meilleure des pratiques alors que bash peut utiliser des tableaux : toRemount+=( "$m" ), puis for m in "${toRemount[@]}"...
pareil pour findmnt et lsblk, j'enverrais ça dans un tableau : readarray -t < <(findmnt/lsblk...); for i in "${MAPFILE[@]}"...
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#3 Aujourd'hui à 10:30
- iznobe
Re : Amelioration mini-script fsck complet de l' ordi
Salut Watael et merci pour tes clarifications / explications .
j ' ai un niveau tres basique , je ne sais pas gerer les tableaux , ni les mettre en place , pas en bash en tout cas .
Pour service , je ne sais pas , les 2 doivent fonctionner je suppose puisque pas d' erreur .
il vaudrait mieux utiliser
sudo systemctl start nfs-server
à la place ?
du coup :
#!/bin/bash
sudo systemctl stop nfs-server;
for m in $(findmnt -a --noheadings --output source,fstype | grep ext | cut -d ' ' -f 1); do
sudo umount -v $m;
remount+=$m" ";
done
for f in $(lsblk -fe7 -l -o name,fstype | grep ext | cut -d ' ' -f 1); do
sudo fsck -fyv /dev/$f;
echo "";
echo " OK --------------------- OK ";
echo "";
done
for m in $remount; do
sudo mount -v $m;
done
sudo systemctl start nfs-server
retour COMPLET et utilisable de commande
MSI Z490A-pro , i7 10700 , 32 GB RAM .
Hors ligne
#4 Aujourd'hui à 17:14
- lynn
Re : Amelioration mini-script fsck complet de l' ordi
Bonjour,
Pas de sudo dans un script comme l'a rappelé watael... Si les commandes de ton script sont des commandes à lancer en admin, c'est le script lui même qui doit être lancé en admin !
«C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!»
Coluche
Hors ligne
#5 Aujourd'hui à 18:04
- Watael
Re : Amelioration mini-script fsck complet de l' ordi
« [...] Quand il y en a un, ça va.C'est quand il y en a beaucoup qu'il y a [un] problème. » Brice de N...euilly.
Dernière modification par Watael (Aujourd'hui à 18:05)
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne