Điểm:1

biến awk $1 và $2 sắp trống

lá cờ ph

MỤC TIÊU: so sánh kích thước cấu trúc thư mục của chúng tôi hàng ngày. Thư mục dữ liệu có hơn 990tb trong đó, vì vậy tôi phải chạy một loạt du's song song để nó hoàn thành trong một khoảng thời gian hợp lý. Đôi khi, chúng tôi thấy dữ liệu lớn tăng trưởng rất nhanh và hiện không có cách nào tốt để xem dữ liệu đã được thêm vào đâu.

VẤN ĐỀ: $1 và $2 trong số awk của tôi không xuất ra bất kỳ thứ gì và các trích dẫn đơn bao quanh chúng cũng không hiển thị.

TẤN CÔNG TRƯỚC: Tôi biết có CÁCH các công cụ tốt hơn để tìm thông tin này và chúng tôi đang nỗ lực triển khai chúng. Điều này có nghĩa là một biện pháp hỗ trợ nhanh chóng và bẩn thỉu để cho phép chúng tôi giải quyết mọi sự tăng trưởng nhanh chóng xảy ra cho đến khi có phần mềm giám sát thích hợp. Ngoài ra, dấu phân cách giữa hai giá trị trong tệp nhật ký là một tab. Dán nó vào trình soạn thảo WYSIWYG này đã chuyển đổi tab thành khoảng trắng.

Cảm ơn trước cho bất kỳ sự giúp đỡ bạn có thể cung cấp cho tôi!

tiếng gầm gừ


Tôi đang cố làm như sau (mã giả)

  • Tìm thư mục hai cấp sâu trong thư mục dữ liệu của chúng tôi
  • Tạo cấu trúc thư mục trong thư mục tạm thời phản ánh cấu trúc thư mục dữ liệu
  • Tạo tệp nhật ký trong cấu trúc thư mục tạm thời cho từng thư mục được tìm thấy trong "tìm thư mục"
  • Điền vào các tệp nhật ký đó bằng đầu ra của một thư mục du -s từ "tìm thư mục"
  • awk các tệp nhật ký và xây dựng các phần chèn sql
  • một khi phần chèn sql trông ổn, tôi sẽ chuyển awk sang mysql
  • khi dữ liệu tồn tại trong mysql, sẽ dễ dàng truy vấn số liệu thống kê hàng ngày

Kịch bản -

DT=`ngày +"%Y%m%d"`
CƠ SỞ=/mnt/dữ liệu/kiểm tra/

find /mnt/data -maxdepth 2 -mindepth 2 -type d -exec sh -c 'mkdir -p "$(dirname '"$BASE$DT"'{}.log)";touch '"$BASE$DT" '{}.log; du -S {} > '"$BASE$DT"'{}.log; awk -F'\''\t'\'' '\''{print "INSERT INTO DATE'"$DT"'(folder_size, folder_location) VALUES('\''$1'\'', '\'' $2'\'');"}'\'' '"$BASE$DT"'{}.log' \;

Ví dụ về tệp nhật ký -

0 /mnt/data/apps/bog/minio.production-config/.minio/certs/CAs
12 /mnt/data/apps/bog/minio.production-config/.minio/certs
1 /mnt/data/apps/bog/minio.production-config/.minio
1 /mnt/data/apps/bog/minio.production-config

Ví dụ về đầu ra từ tập lệnh cho tệp nhật ký này -

CHÈN VÀO NGÀY20220508(kích thước thư mục, vị trí thư mục) GIÁ TRỊ(, );
CHÈN VÀO NGÀY20220508(kích thước thư mục, vị trí thư mục) GIÁ TRỊ(, );
CHÈN VÀO NGÀY20220508(kích thước thư mục, vị trí thư mục) GIÁ TRỊ(, );
CHÈN VÀO NGÀY20220508(kích thước thư mục, vị trí thư mục) GIÁ TRỊ(, );
lá cờ in
Có thực sự cần thiết để đếm kích thước tập tin? Chỉ theo dõi việc sử dụng đĩa là không đủ?
Điểm:1
lá cờ bd

Bạn đang sâu trong việc trích dẫn địa ngục ở đó.

Của bạn tìm thấy lệnh chuyển đến sh -c một lập luận như

mkdir -p "$(tên thư mục /mnt/data/test/20220508/mnt/data/abc/def.log)"; chạm /mnt/data/test/20220508/mnt/data/abc/def.log; du -S /mnt/data/abc/def > /mnt/data/test/20220508/mnt/data/abc/def.log; awk -F'\t' '{print "CHÈN VÀO DATE20220508(folder_size, folder_location) VALUES('$1', '$2');"}' /mnt/data/test/20220508/mnt/data/abc/def. đăng nhập

Hiện nay sh phân tích cú pháp này, loại bỏ một cấp độ trích dẫn. Nó mở rộng các $(tên thư mục /mnt/data/test/20220508/mnt/data/abc/def.log) đến /mnt/dữ liệu/kiểm tra/20220508/mnt/dữ liệu/abc, và các biến $1$2 bên trong awk thành các chuỗi trống (vì nó không nhận được bất kỳ tham số vị trí nào), đưa ra

mkdir -p /mnt/data/test/20220508/mnt/data/abc;touch /mnt/data/test/20220508/mnt/data/abc/def.log; du -S /mnt/data/abc/def > /mnt/data/test/20220508/mnt/data/abc/def.log; awk -F\t '{print "CHÈN VÀO DATE20220508(folder_size, folder_location) VALUES(, );"}' /mnt/data/test/20220508/mnt/data/abc/def.log

(Tôi đã chèn lại các trích dẫn đơn xung quanh awk đối số văn bản chương trình cho rõ ràng.)

Cách dễ nhất là tạo một tệp cho awk chương trình mà sau đó bạn chuyển đến awk thông qua -f Tùy chọn. Sau đó tôi cũng khuyên bạn nên thực hiện bài tập FS = "\t" trong tệp đó thay vì sử dụng -F Tùy chọn.

Cuối cùng, nếu bạn không còn sử dụng tệp nhật ký nào nữa ngoại trừ việc tạo các câu lệnh SQL, thì bạn có thể đơn giản hóa đáng kể tập lệnh của mình bằng cách chuyển đầu ra của du trực tiếp đến awk, Thích:

DT=`ngày +"%Y%m%d"`

tìm /mnt/data -maxdepth 2 -mindepth 2 -type d -exec sh -c 'du -S {} | awk -v DT='$DT' -f /mnt/data/makeinserts.awk' \;

với tập tin /mnt/data/makeinserts.awk chứa tinh khiết awk chương trình:

BẮT ĐẦU{FS="\t"}
{print "CHÈN VÀO NGÀY"DT"(folder_size, folder_location) VALUES('"$1"', '"$2"');"}

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.