Di recente ho deciso che bastava abbastanza: avrei imparato ad usare fluentemente grep. Sono passate tutte e tre le ore e sono già sconcertato da questo problema con i giocattoli.
Attualmente sto sincronizzando un array RAID5, i cui progressi possono essere monitorati leggendo /proc/mdstat
. L'output di cat /proc/mdstat
è mostrato di seguito.
$ cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md1 : active raid5 sda4[0] sdb4[1] sdc4[2]
5858765824 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU]
[=============>.......] resync = 67.3% (1972073120/2929382912) finish=205.7min speed=77537K/sec
md0 : active raid5 sda3[0] sdb3[1] sdc3[2]
998400 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU]
unused devices: <none>
Per divertimento, ho pensato che avrei usato watch
per monitorare /proc/mdstat
in tempo reale, reindirizzare l'output in grep e mostrare solo il tempo rimanente stimato.
Il mio approccio è il seguente:
watch cat /proc/mdstat | grep finish=\d+\.\d | grep \d+\.\d
Sono sconcertato sul perché questo non abbia prodotto risultati. In effetti, la prima espressione grep non produce alcun output, anche se sembra funzionare su Regex101 .
Che cosa sto facendo di sbagliato?
\d
e citare sempre una regex all'internogrep
. Vedi la sintassi dell'espressione regolare 'grep' .