Gần đây tôi đã quyết định rằng đủ là đủ - tôi sẽ học cách sử dụng grep một cách trôi chảy. Đã ba giờ trôi qua và tôi đã bị vướng vào vấn đề đồ chơi này.
Tôi hiện đang đồng bộ hóa một mảng RAID5, tiến trình có thể được theo dõi bằng cách đọc /proc/mdstat
. Đầu ra của cat /proc/mdstat
được hiển thị dưới đây.
$ 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>
Để giải trí, tôi nghĩ rằng tôi sẽ sử dụng watch
để theo dõi /proc/mdstat
trong thời gian thực, chuyển đầu ra thành grep và chỉ hiển thị thời gian còn lại ước tính.
Cách tiếp cận của tôi như sau:
watch cat /proc/mdstat | grep finish=\d+\.\d | grep \d+\.\d
Tôi không biết tại sao điều này không tạo ra đầu ra. Trong thực tế, biểu thức grep đầu tiên không tạo ra đầu ra, mặc dù nó dường như hoạt động trên Regex101 .
Tôi đang làm gì sai?
\d
và luôn trích dẫn một regex bên tronggrep
. Xem cú pháp biểu thức chính quy 'grep' .