OpenWrt में संकुल द्वारा कब्जे में लिया गया डिस्क स्थान कैसे जानें?


16

मैं अपने डिवाइस पर OpenWrt को कॉन्फ़िगर करने का प्रयास कर रहा हूं और अंतरिक्ष से बाहर निकल गया हूं। मैं कुछ टूलिंग पैकेज डाउनलोड कर रहा था। अब मैं उनके वज़न का निर्धारण कैसे कर सकता हूं ताकि यह तय हो जाए कि अनइंस्टॉल क्या है?

क्या ओपीकेजी के साथ स्थापित पैकेजों के आकार को प्रदर्शित करना संभव है?

जवाबों:


11

प्रत्येक OpenWrt वातावरण समान रूप से सेट नहीं किया जाता है, इसलिए मेरा उत्तर अंधेरे में एक शॉट है ...

उदाहरण आउटपुट OpenWrt-12.09 से "TP-Link TL-WDR4300" पर लिया गया है।

ssh आपके राउटर में।

अपनी filesyems की जाँच करें।

root@AP9:~# df
Filesystem           1K-blocks      Used Available Use% Mounted on
rootfs                    5184      2124      3060  41% /
/dev/root                 2048      2048         0 100% /rom
tmpfs                    63340       948     62392   1% /tmp
tmpfs                      512         0       512   0% /dev
/dev/mtdblock3            5184      2124      3060  41% /overlay
overlayfs:/overlay        5184      2124      3060  41% /
/dev/sda1             31234700    593536  29075728   2% /mnt/sda1

/dev/sda1 मेरे यूएमटीएस स्टिक का माइक्रो एसडी कार्ड है ... बस इसे अनदेखा करें।

कई राउटर को इसी तरह से देखा जाता है जैसे कि यहां देखा गया है: एक ओवरले फ़ाइल सिस्टम द्वारा एक रीडायली रूट फाइलशीट को छद्म लेखन योग्य बनाया जाता है।

अंदर देखें /overlay...

root@AP9:~# cd /overlay/usr/lib/opkg/info/
root@AP9:/overlay/usr/lib/opkg/info# ls *.list | tail -3
usb-modeswitch-data.list
usb-modeswitch.list
zlib.list

इस निर्देशिका में अतिरिक्त रूप से स्थापित संकुल के बारे में जानकारी है। समाप्त होने वाली .listफाइलें समान नाम (बिना .list) के साथ पैकेज द्वारा स्थापित फाइलों की सूची हैं :

root@AP9:/overlay/usr/lib/opkg/info# cat zlib.list 
/usr/lib/libz.so.1.2.7
/usr/lib/libz.so.1
/usr/lib/libz.so

पैकेज zlibमें 3 फाइलें हैं।

root@AP9:/overlay/usr/lib/opkg/info# du $(cat zlib.list) 
71      /usr/lib/libz.so.1.2.7
1       /usr/lib/libz.so.1
1       /usr/lib/libz.so

पैकेज zlibमें 73kbytes स्थापित फाइलें हैं।

एक क्रूड 1-लाइनर यह सब एक साथ गोंद करने के लिए है और यह छोटा आउटपुट है:

# awk 'BEGIN{D="cd /overlay/usr/lib/opkg/info&&";C=D"ls *.list";while(C|getline>0){P=substr(F=$1,1,length($1)-5);J=D"du -sk $(cat "F")";s=0;while(J|getline>0){s+=$1;t+=$1}close(J);print s"\t"P}print t"\t---TOTAL---"}'
26      blkid
30      block-mount
17      chat
55      comgt
6       kmod-fs-exportfs
(((...some lines skipped...)))
14      portmap
48      swap-utils
223     usb-modeswitch-data
45      usb-modeswitch
73      zlib
4184    ---TOTAL---

HTH!


जोड़ा गया 2014-10-17:

निम्न आउटपुट OpenWrt-12.09 से "TP-Link TL-WR703N" पर लिया जाता है और दिखाता है कि पैकेज के आकार के अनुसार आउटपुट को कैसे जोड़ा जाए।

इस Sबात पर नजर डालें कि गेम में वेरिएबल कहां और कैसे आता है ...

# awk 'BEGIN{D="cd /overlay/usr/lib/opkg/info&&";C=D"ls *.list";S="sort -n";while(C|getli
ne>0){P=substr(F=$1,1,length($1)-5);J=D"du -sk $(cat "F")";s=0;while(J|getline>0){s+=$1;t+=$1}close(J)
;print s"\t"P|S}close(S);print t"\t---TOTAL---"}'
5       kmod-lib-crc16
5       luci-proto-3g
12      libuuid
13      kmod-usb-serial-wwan
17      chat
24      kmod-usb-acm
24      libusb
26      blkid
30      block-mount
41      kmod-usb-serial
45      usb-modeswitch
48      kmod-usb-serial-option
48      swap-utils
55      comgt
67      kmod-usb-storage
148     libblkid
154     kmod-scsi-core
223     usb-modeswitch-data
382     kmod-fs-ext4
1367    ---TOTAL---

फिर से: HTH!


जोड़ा गया 2018-01-13:

उपरोक्त तरीके का परीक्षण OpenWrt-AA पर किया गया था।

अब LEDE-17.01 को देखते हुए एक रास्ता बदल गया है: इसे ठीक करने के /overlayसाथ प्रतिस्थापित करना /overlay/upper

यथास्थिति ( opkg-list-user-installed-sorted-by-size1-लाइनर के रूप में नहीं):

#!/usr/bin/awk -f
BEGIN {
        D="cd /overlay/upper/usr/lib/opkg/info&&"
        C=D"ls *.list"
        S="sort -n"
        while(C|getline>0) {
                P=substr(F=$1,1,length($1)-5)
                J=D"du -sk $(cat "F")"
                s=0
                while(J|getline>0) {
                        s+=$1
                        t+=$1
                }
                close(J)
                print s"\t"P|S
        }
        close(S)
        print t"\t---TOTAL---"
}

परीक्षण चालन:

root@zsun0:~# ./opkg-list-user-installed-sorted-by-size
8       luci-ssl
9       libustream-mbedtls
13      px5g-mbedtls
338     libmbedtls
368     ---TOTAL---

खुला प्रश्न: यह /overlayसंरचना में परिवर्तन कब हुआ? LEDE-17 OpenWrt-CC का उत्तराधिकारी है और मेरे पास OpenWrt में कोई सिस्टम नहीं है। इसलिए यदि आपको OpenWrt-BB या -CC पर इसकी आवश्यकता है, तो /overlayपहले अंदर देखें ।


बहुत बढ़िया! केवल छँटाई याद आ रही है ;-)
बोनान्ज़ा

@bonanza ... पूफ! या "simsAWKlabim" AWKish में ... ;-D

4

यति के समाधान के आधार पर , एक और संभावना है, जो तेज हो सकती है। फ़ाइल duमें फ़ाइलों के लिए आकार की गणना करने के बजाय list, हम फ़ाइल में घोषित आकार का उपयोग कर सकते हैं control

मेरी छोटी opkg_sizesस्क्रिप्ट जैसी कुछ

cd /usr/lib/opkg/info
for i in *.control
do
  echo `grep Size "$i" | cut -f 2 -d :` "${i%.control}"
done

यदि आप चाहते हैं कि आउटपुट को क्रमबद्ध किया जाए, तो आप इसे नीचे चला सकते हैं sort:

./opkg_sizes | sort -n

संपादित करें

यति के अंतर को प्रकट करने के लिए मेरे स्क्रिप्ट परिणामों की तुलना करना । यह इसलिए है क्योंकि उन्होंने कहा /overlay/usr/lib/opkg/infoथा कि मुझे लगा कि /overlayउपसर्ग अनावश्यक है। ठीक है, मुझे पूरी तरह से समझ में नहीं आता कि क्यों, लेकिन /usr/lib/opkg/infoसिस्टम पैकेज भी देता है, जबकि /overlay/usr/lib/opkg/infoकेवल उपयोगकर्ता के पैकेज देता है।

इसलिए, यदि उपयोगकर्ता को सिस्टम पैकेज में भी रुचि है, तो पहले संस्करण का उपयोग करें। लेकिन केवल उपयोगकर्ता के पैकेजों को प्राप्त करने के लिए, बस पहली पंक्ति को बदलें:

 cd /overlay/usr/lib/opkg/info

ऐसा करने के बाद, दोनों स्क्रिप्ट एक ही पैकेज को संदर्भित करते हैं, लेकिन विभिन्न संख्याओं के साथ ... (बाइट्स और किलोबाइट्स के बीच स्पष्ट अंतर के अलावा :-))


root@ap8:~# ls -l 1412453029-14.07-wdr4300-default-packages 
-rw-r--r--    1 root     root          2683 Oct  4 20:03 1412453029-14.07-wdr4300-default-packages
root@ap8:~# du 1412453029-14.07-wdr4300-default-packages 
3       1412453029-14.07-wdr4300-default-packages

lsबाइट्स duमें आकार दिखाता है, फ़ाइल द्वारा आवंटित सभी ब्लॉकों का आकार दिखाता है।


यह पूछा गया था कि अंतरिक्ष डाउनलोड किए गए पैकेज कितना खा रहे हैं। चमकते फर्मवेयर में स्थापित किए जा रहे पैकेजों को हटाने से ओवरले फाइल सिस्टम में खाली जगह नहीं मिलती है। । । । । । कम से कम इस तरह से मैं इस प्रश्न की व्याख्या कर रहा हूं ...

प्रश्न की आपकी समझ से मैं सहमत हूँ। लेकिन मुझे लगा कि / ओवरले को वास्तविक प्रणाली को प्रतिबिंबित करना चाहिए, शायद कुछ और जानकारी हो; लेकिन मैं हैरान था कि इसमें कम जानकारी है।
Zvika

इसके अलावा, यह अजीब है कि 2 विधियाँ अलग-अलग संख्याएँ देती हैं ...
Zvika

duफाइलसिस्टम में मायने रखता है दानेदार बनाना। और / ओवरले फाइलसिस्टम परतों का केवल रिटेल हिस्सा है।

ठीक है, तो मुझे लगता है कि यह निष्कर्ष निकाला है कि आपका उत्तर बेहतर है ...
Zvika

2

यह उत्तर Zvika के उत्तर का एक उन्नत संस्करण है । चूंकि स्रोत-कोड काफी अलग है, इसलिए मेरा मानना ​​है कि मूल के संपादन के बजाय इसे अतिरिक्त उत्तर के रूप में जोड़ना बेहतर है।

#!/bin/sh
grep -H Installed-Size: /overlay/usr/lib/opkg/info/*.control | \
  sed 's,^.*/\([^/]\+\)\.control:Installed-Size: *\(.*\),\2\t\1,'

मूल कोड की आवश्यकता भी कई कांटे, एक सेकंड के रूप में धीमी गति से के रूप में यह हो जाता है। यह सुधरा हुआ कोड छोटा है और केवल तीन प्रक्रियाओं का उपयोग करता है, जिससे 0.02s (मेरे राउटर पर) के एक धधकते तेज दौड़ने का समय होता है।

आप रास्तों को मोड़ सकते हैं:

  • /overlay/usr/lib/opkg/info/*.control→ उपयोगकर्ता-स्थापित पैकेज। ये वे पैकेज हैं जिन्हें खाली करने के लिए जगह खाली की जा सकती है।
  • /rom/usr/lib/opkg/info/*.control→ सिस्टम पैकेज। इन्हें अनइंस्टॉल नहीं किया जा सकता है। (जब तक आप वास्तव में नहीं जानते कि आप क्या कर रहे हैं।) चूंकि वे केवल-पढ़ने वाले विभाजन में संग्रहीत हैं, उन्हें हटाने से अतिरिक्त स्थान खाली नहीं होगा।
  • /usr/lib/opkg/info/*.control → सभी पैकेज।

0

मेरे लिए सबसे आसान तरीका था find;

find / -size +500k

नीचे उत्पादन के साथ;

# find / -size +500k
/lib/libc.so
/lib/modules/4.4.92/mac80211.ko
/overlay/upper/usr/lib/libcrypto.so.1.0.0
/overlay/upper/usr/lib/libdns.so.165.0.4
/overlay/upper/usr/sbin/sshd
/rom/lib/libc.so
/rom/lib/modules/4.4.92/mac80211.ko
/usr/lib/libcrypto.so.1.0.0
/usr/lib/libdns.so.165.0.4
/usr/sbin/sshd

ये मेरे LEDE इंस्टॉल में "बड़ी" फाइलें थीं। मुझे अपने राउटर पर कुछ अतिरिक्त स्थान की आवश्यकता थी ताकि मैं कुछ USB संग्रहण स्थान को प्रारूपित, विभाजन, और माउंट कर सकूं। +500kएक फ़ाइल आकार में समायोजित करें जो आपको बेहतर सूट करता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.