I am trying to make a functional script just using Partition Label, get that label, from the Label get the Device, and pass fsck -fy
twice on each partition.
#!/usr/bin/env bash
# Filter partition by label : except "Inukaze", "LUBUNTU" & "72GB"
Etiqueta=($(ls -l /dev/disk/by-label | grep -v "Inukaze" | grep -v "LUBUNTU" | grep -v "72GB" | awk '{print $9}'))
Set array list using the labels for get device
Particion=($(for i in "${Etiqueta[@]}" ; do blkid -L "$i" ; done))
And the part i need help :
for ((i=0; i<${#Etiqueta[@]}; i++)); do echo -e "\nExaminando : ""${Etiqueta[i]} (${Particion[i]})" & fsck -fy ${Particion[@]} & fsck -fy ${Particion[@]} ; done
Output of ls -l /dev/disk/by-label | grep -v "Inukaze" | grep -v "LUBUNTU" | grep -v "72GB" | awk '{print $9}'
:
1SlackIni
Compartido
Slack32
Slack64
Tactinu1
Tactinu1-Inicio
Tactinu1-Slack32
Tactinu1-Slack64
Output of « for i in "${Etiqueta[@]}" ; do blkid -L "$i" ; done
»
/dev/sda1
/dev/sdb1
/dev/sdb6
/dev/sdb5
/dev/sdc1
/dev/sdc2
/dev/sdc4
/dev/sdc3
Output of for ((i=0; i<${#Etiqueta[@]}; i++)); do echo -e "\nExaminando : ""${Etiqueta[i]} (${Particion[i]})" & fsck -fy ${Particion[@]} & fsck -fy ${Particion[@]} ; done
:
Examinando : 1SlackIni (/dev/sda1)
[2] 5199
fsck from util-linux 2.27.1
fsck from util-linux 2.27.1
e2fsck 1.42.13 (17-May-2015)
e2fsck 1.42.13 (17-May-2015)
/dev/sda1 está en uso.
e2fsck: No se puede continuar, se finaliza.
Paso 1: Verificando nodos-i, bloques y tamaños
e2fsck 1.42.13 (17-May-2015)
e2fsck 1.42.13 (17-May-2015)
fsck.ext3: Device or resource busy mientras se intentaba abrir /dev/sdb1
¿Sistema de ficheros montado o abierto en exclusiva por otro programa?
Paso 2: Verificando la estructura de directorios
Paso 3: Revisando la conectividad de directorios
Paso 4: Revisando las cuentas de referencia
Paso 5: Revisando el resumen de información de grupos
1SlackIni: 977/65536 ficheros (24.8% no contiguos), 114672/262144 bloques
e2fsck 1.42.13 (17-May-2015)
e2fsck 1.42.13 (17-May-2015)
fsck.ext3: Device or resource busy mientras se intentaba abrir /dev/sdb6
¿Sistema de ficheros montado o abierto en exclusiva por otro programa?
e2fsck 1.42.13 (17-May-2015)
e2fsck 1.42.13 (17-May-2015)
/dev/sdb5 está en uso.
e2fsck: No se puede continuar, se finaliza.
e2fsck 1.42.13 (17-May-2015)
e2fsck 1.42.13 (17-May-2015)
/dev/sdc1 está en uso.
e2fsck: No se puede continuar, se finaliza.
Paso 1: Verificando nodos-i, bloques y tamaños
e2fsck 1.42.13 (17-May-2015)
e2fsck 1.42.13 (17-May-2015)
/dev/sdc2 está en uso.
e2fsck: No se puede continuar, se finaliza.
Paso 1: Verificando nodos-i, bloques y tamaños
Paso 2: Verificando la estructura de directorios
Paso 3: Revisando la conectividad de directorios
Paso 4: Revisando las cuentas de referencia
Paso 5: Revisando el resumen de información de grupos
e2fsck 1.42.13 (17-May-2015)
e2fsck 1.42.13 (17-May-2015)
/dev/sdc4 está en uso.
e2fsck: No se puede continuar, se finaliza.
e2fsck 1.42.13 (17-May-2015)
e2fsck 1.42.13 (17-May-2015)
/dev/sdc3 está en uso.
e2fsck: No se puede continuar, se finaliza.
Paso 1: Verificando nodos-i, bloques y tamaños
Paso 1: Verificando nodos-i, bloques y tamaños
Paso 1: Verificando nodos-i, bloques y tamaños
Paso 1: Verificando nodos-i, bloques y tamaños
Paso 2: Verificando la estructura de directorios
Paso 1: Verificando nodos-i, bloques y tamaños
Tactinu1-Inicio: 11/133824 ficheros (0.0% no contiguos), 9196/535296 bloques
Paso 3: Revisando la conectividad de directorios
Paso 4: Revisando las cuentas de referencia
Paso 5: Revisando el resumen de información de grupos
Tactinu1-Slack64: 1450/1966560 ficheros (49.7% no contiguos), 5377699/7865600 bloques
Paso 2: Verificando la estructura de directorios
Paso 3: Revisando la conectividad de directorios
Paso 4: Revisando las cuentas de referencia
Paso 5: Revisando el resumen de información de grupos
Tactinu1-Slack32: 27765/1966080 ficheros (10.0% no contiguos), 5993183/7863808 bloques
Paso 2: Verificando la estructura de directorios
Paso 3: Revisando la conectividad de directorios
Paso 4: Revisando las cuentas de referencia
Paso 5: Revisando el resumen de información de grupos
Tactinu1: 81725/5709824 ficheros (25.0% no contiguos), 20667299/22807552 bloques
Desire output : First the echo output "Examinando : $Etiqueta ($Particion)", after fsck normal output "Paso 1" :
Examinando : 1SlackIni (/dev/sda1)
Paso 1: Verificando nodos-i, bloques y tamaños
Paso 2: Verificando la estructura de directorios
Paso 3: Revisando la conectividad de directorios
Paso 4: Revisando las cuentas de referencia
Paso 5: Revisando el resumen de información de grupos
1SlackIni: 977/65536 ficheros (24.8% no contiguos), 114672/262144 bloques
[ wait for the before fsck finish ]
Examinando : 1SlackIni (/dev/sda1)
Paso 1: Verificando nodos-i, bloques y tamaños
Paso 2: Verificando la estructura de directorios
Paso 3: Revisando la conectividad de directorios
Paso 4: Revisando las cuentas de referencia
Paso 5: Revisando el resumen de información de grupos
1SlackIni: 977/65536 ficheros (24.8% no contiguos), 114672/262144 bloques
[ Yes twice, because i ever do this two times ]
Examinando Compartido (/dev/sdb1)
fsck from util-linux 2.27.1
e2fsck 1.42.13 (17-May-2015)
Paso 1: Verificando nodos-i, bloques y tamaños
Paso 2: Verificando la estructura de directorios
Paso 3: Revisando la conectividad de directorios
Paso 4: Revisando las cuentas de referencia
Paso 5: Revisando el resumen de información de grupos
Compartido: 1105544/39321600 ficheros (27.2% no contiguos), 149013032/157286400 bloques
The output is long.
swap
partitions (and maybe other block dev types, e.g.zfs_member
and maybelinux_raid_member
) too. You can get the fstype of a block dev withfs=$(lsblk -n -o fstype "$f")
. – cas Jul 26 '22 at 05:29mapfile
is a bash built-in, not an external program. It doesn't have a version (or, if you want, it has the same version as whatever version of bash you're running). According to bash's changelog,mapfile
has had a-d
option since bash 4.4-alpha (late 2015). 2. To remove all but the last/
from a string, you can use bash's parameter expansion features, e.g.var=/dev/disk/by-label/Slack64; echo ${var/*\//}
will print justSlack64
. Seeman bash
and search forParameter Expansion
.