การใช้งานดิสก์ทั้งหมดสำหรับผู้ใช้เฉพาะ


12

ฉันต้องการดูการใช้งานดิสก์ทั้งหมดสำหรับตัวฉันเองในระบบไฟล์เฉพาะ ฉันดำเนินการคำสั่ง

du -h ~my_user_name

my_user_nameอย่างไรก็ตามรายการนี้ทุกไดเรกทอรีเป็นเจ้าของโดย ฉันต้องการได้รับผลรวมของข้อมูลทั้งหมดนี้ ตัวเลือกที่เหมาะสมในการผ่านคืออะไร ฉันเหนื่อย

du -h -c ~my_user_name

แต่นั่นไม่ได้ผล

คำตอบ:


11

การส่งผ่าน-sไปยังduจะ จำกัด ผลลัพธ์ให้เฉพาะรายการที่ระบุในบรรทัดคำสั่ง

du -sh ~

9

คุณจะแสดงผลรวมต่อโฟลเดอร์เท่านั้นไม่ใช่ต่อผู้ใช้

ซึ่งอาจใช้งานได้หากคุณต้องการขนาดรวมของการพูด/home/example_user/และหาก example_user นั้นมีไฟล์ในโฟลเดอร์นั้น หากผู้ใช้รายอื่นมีไฟล์อยู่ในตัวพวกเขาสิ่งนี้จะไม่ได้ขนาดของไฟล์ทั้งหมดที่คุณเป็นเจ้าของ แต่ขนาดรวมของไฟล์ทั้งหมดในโฟลเดอร์นั้น

ในการรับข้อมูลต่อผู้ใช้ให้ทำดังนี้

  1. หากคุณเปิดใช้งานโควต้าให้ใช้คำสั่งเหล่านั้น
  2. ใช้find to walk แม้ว่าไดเรกทอรีทั้งหมดที่คุณต้องการจะนับไฟล์ของคุณใช้ uidเพื่อเลือกไฟล์ของคุณเท่านั้นและเก็บอาเรย์เชื่อมโยงไว้ใน awk เพื่อนับผลรวม

find /path/to/search/ -user username_whos_files_to_count -type f -printf "%s\n" | awk '{t+=$1}END{print t}'

หมายเหตุนี่ใช้ GNU ค้นหาส่วนขยายเฉพาะ

  • /path/to/search/การค้นหาคำสั่งแรกที่ผ่านมาทุกไฟล์และไดเรกทอรีใน
  • -type fทำให้แน่ใจว่าคุณเลือกไฟล์เท่านั้นมิฉะนั้นคุณจะนับขนาดของไดเรกทอรีด้วย (ลองสร้างโฟลเดอร์เปล่ามันอาจจะใช้พื้นที่ดิสก์ 4k)
  • -user username_whos_files_to_count เลือกผลลัพธ์จากผู้ใช้คนเดียวเท่านั้น
  • -printf "%s\n" จะพิมพ์ขนาด

หากคุณเพียงแค่เรียกใช้ส่วนแรกของสิ่งนี้คุณจะได้รับรายชื่อหมายเลข นี่คือขนาดไฟล์ (ทุกสิ่งทุกอย่างถูกปล้นมีเพียงขนาดที่ถูกพิมพ์ด้วยคำสั่งพิมพ์% s)

จากนั้นเราสามารถเพิ่มหมายเลขเหล่านั้นทั้งหมดเพื่อรับการสรุป ในตัวอย่างนี้ทำได้ด้วย awk


+1 ประเด็นที่ดีขอบคุณ! คำตอบด้านล่างจริง ๆ แล้วเป็นสิ่งที่ฉันต้องการ ความแตกต่างของผู้ใช้ / โฟลเดอร์ไม่สำคัญมากในกรณีของฉัน
อเล็กซ์

ดี du -schเป็นคำสั่งที่ใช้ง่าย การติดตามผู้ที่เป็นเจ้าของสิ่งที่เมื่อสิ่งต่าง ๆ ปะปนกันนั้นเป็นเรื่องที่ยากกว่ามาก ฉันใช้ครั้งเดียว แต่ฉันมีปัญหาในการสร้างใหม่ในวันนี้
Hennes

ช่วยฉันได้มากคำอธิบายที่สมบูรณ์แบบ
Babin Lonston

2

ในการค้นหาการใช้งานทั้งหมดโดยผู้ใช้เฉพาะคำสั่งที่ดีคือ:

find -user $USER -type f -exec du -chs {} +

คุณสามารถแก้ไขเพิ่มเติมได้ตามความต้องการเช่นฉันมักจะต้องการสรุปการใช้งานโดยโฟลเดอร์และต่อไปนี้ใช้งานได้ดี:

find . -maxdepth 1 -user $USER -type d ! -path . -exec du -chs {} +

สิ่งนี้จะค้นหาเฉพาะไดเรกทอรีในระดับหนึ่ง จำกัด โดยผู้ใช้ไม่รวมไดเรกทอรีหลักและพิมพ์แต่ละไดเรกทอรีและสรุปในตอนท้าย

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.