Score:1

ตัวแปร awk $1 และ $2 ว่างเปล่า

ธง ph

เป้าหมาย : เปรียบเทียบขนาดของโครงสร้างไดเร็กทอรีของเราแบบวันต่อวัน โฟลเดอร์ข้อมูลมีขนาดมากกว่า 990tb ดังนั้นฉันจึงต้องเรียกใช้ du's แบบขนานหลายชุดเพื่อให้เสร็จสิ้นในระยะเวลาที่เหมาะสม ในบางครั้ง เราเห็นการเติบโตของข้อมูลจำนวนมากอย่างรวดเร็ว และขณะนี้ยังไม่มีวิธีที่ดีในการดูว่าข้อมูลถูกเพิ่มไปที่ใด

ปัญหา: $1 และ $2 ของ awk ของฉันไม่แสดงผลอะไรเลย และเครื่องหมายคำพูดเดี่ยวที่ควรล้อมรอบก็ไม่ปรากฏขึ้นเช่นกัน

การประท้วงก่อนการเลิกจ้าง : ฉันรู้ว่ามีเครื่องมือที่ดีกว่านี้ในการค้นหาข้อมูลนี้ และเรากำลังดำเนินการเพื่อใช้งาน นี่หมายถึงการให้ความช่วยเหลืออย่างรวดเร็วและสกปรกเพื่อให้เราจัดการกับการเติบโตอย่างรวดเร็วที่เกิดขึ้นจนกว่าจะมีซอฟต์แวร์ตรวจสอบที่เหมาะสม นอกจากนี้ ตัวคั่นระหว่างสองค่าในล็อกไฟล์ยังเป็นแท็บ วางลงในโปรแกรมแก้ไขแบบ WYSIWYG แปลงแท็บเป็นช่องว่าง

ขอขอบคุณล่วงหน้าสำหรับความช่วยเหลือใด ๆ ที่คุณสามารถให้ฉันได้!

สแนร์ฟ


ฉันพยายามทำสิ่งต่อไปนี้ (รหัสจำลอง)

  • ค้นหาโฟลเดอร์ลึกสองระดับในโฟลเดอร์ข้อมูลของเรา
  • สร้างโครงสร้างไดเร็กทอรีในโฟลเดอร์ temp ที่จำลองโครงสร้างโฟลเดอร์ข้อมูล
  • สร้างไฟล์บันทึกในโครงสร้างโฟลเดอร์ชั่วคราวสำหรับแต่ละโฟลเดอร์ที่พบใน "ค้นหาโฟลเดอร์"
  • เติมไฟล์บันทึกเหล่านั้นด้วยผลลัพธ์ของ du -s ของโฟลเดอร์จาก "ค้นหาโฟลเดอร์"
  • awk ไฟล์บันทึกและสร้างส่วนแทรก sql
  • เมื่อส่วนแทรก sql ดูถูกต้อง ฉันจะไพพ์ awk ไปที่ mysql
  • เมื่อข้อมูลมีอยู่ใน mysql แล้ว การสืบค้นสถิติแบบวันต่อวันจะเป็นเรื่องง่าย

สคริปต์ -

DT=`วันที่ +"%Y%m%d"`
ฐาน=/mnt/ข้อมูล/ทดสอบ/

ค้นหา /mnt/data -maxความลึก 2 -ขั้นต่ำ 2 -type d -exec sh -c 'mkdir -p "$(dirname '"$BASE$DT"'{}.log)";touch '"$BASE$DT" '{}.บันทึก; du -S {} > '"$BASE$DT"'{}.log; awk -F'\''\t'\'' '\''{พิมพ์ "INSERT INTO DATE'"$DT"'(folder_size, folder_location) VALUES('\''$1'\'', '\'' $2'\'');"}'\'' '"$BASE$DT"'{}.log' \;

ตัวอย่างไฟล์บันทึก -

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

ตัวอย่างของเอาต์พุตจากสคริปต์สำหรับล็อกไฟล์นี้ -

INSERT INTO DATE20220508(folder_size, folder_location) ค่า(, );
INSERT INTO DATE20220508(folder_size, folder_location) ค่า(, );
INSERT INTO DATE20220508(folder_size, folder_location) ค่า(, );
INSERT INTO DATE20220508(folder_size, folder_location) ค่า(, );
in flag
จำเป็นต้องนับขนาดไฟล์จริงหรือ? การตรวจสอบการใช้ดิสก์ไม่เพียงพอหรือไม่
Score:1
ธง bd

คุณกำลังอ้างถึงนรกที่นั่น

ของคุณ หา คำสั่งส่งผ่านไปยัง sh -c การโต้แย้งเช่น

mkdir -p "$(dirname /mnt/data/test/20220508/mnt/data/abc/def.log)";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 "INSERT INTO DATE20220508(folder_size, folder_location) VALUES('$1', '$2');"}' /mnt/data/test/20220508/mnt/data/abc/def. บันทึก

ตอนนี้ แยกวิเคราะห์สิ่งนี้ ลบหนึ่งระดับการอ้างอิง มันขยายความ $(นามสกุล /mnt/data/test/20220508/mnt/data/abc/def.log) ถึง /mnt/data/test/20220508/mnt/data/abcและตัวแปร $1 และ $2 ใน อึดอัด เป็นสตริงว่าง (เนื่องจากไม่ได้รับพารามิเตอร์ตำแหน่ง) ให้

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 "INSERT INTO DATE20220508(folder_size, folder_location) VALUES(, );"}' /mnt/data/test/20220508/mnt/data/abc/def.log

(ฉันใส่เครื่องหมายคำพูดเดียวอีกครั้งรอบ ๆ อึดอัด อาร์กิวเมนต์ข้อความโปรแกรมเพื่อความชัดเจน)

วิธีที่ง่ายที่สุดคือสร้างไฟล์สำหรับ อึดอัด โปรแกรมที่คุณส่งต่อไปยัง อึดอัด ผ่านทาง -ฉ ตัวเลือก. ฉันก็จะแนะนำให้ทำการมอบหมายด้วย FS = "\t" ในไฟล์นั้นแทนการใช้ไฟล์ -ฉ ตัวเลือก.

สุดท้าย หากคุณไม่ได้ใช้งานไฟล์บันทึกใดๆ อีกต่อไป ยกเว้นการสร้างคำสั่ง SQL คุณสามารถทำให้สคริปต์ของคุณง่ายขึ้นได้อย่างมากโดยการไพพ์เอาต์พุตของ ดู่ โดยตรงกับ อึดอัด, ชอบ:

DT=`วันที่ +"%Y%m%d"`

ค้นหา /mnt/data -maxความลึก 2 -ความลึกขั้นต่ำ 2 -type d -exec sh -c 'du -S {} | awk -v DT='$DT' -f /mnt/data/makeinserts.awk' \;

ด้วยไฟล์ /mnt/data/makeinserts.awk ที่มีความบริสุทธิ์ อึดอัด โปรแกรม:

เริ่มต้น{FS="\t"}
{พิมพ์ "INSERT INTO DATE"DT"(folder_size, folder_location) VALUES('"$1"', '"$2"');"}

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา