Debian

conky 中的目錄大小

  • October 27, 2015

Conky 是一個系統監控軟體。我想顯示 /usr 和 /var 的目錄大小。不幸的是,我沒有找到任何 conky 命令,所以我自己做了。

/usr $alignr${exec du -sch /usr | head -n1 | awk '{print $1}'}
/var $alignr${exec du -sch /var | head -n1 | awk '{print $1}'}

它對我的 /usr 目錄按預期工作。/var 目錄的相同命令弄亂了我的系統日誌:

#cat /var/log/syslog | tail -n 8
Oct 27 15:17:31 Hans gnome-session[1155]: du: das Verzeichnis „/tmp/systemd-private-3f1797004e2e4fceacc1baad91af9e67-cups.service-LhZ0Wi“ kann nicht gelesen werden: Keine Berechtigung
Oct 27 15:17:31 Hans gnome-session[1155]: du: das Verzeichnis „/tmp/pulse-PKdhtXMmr18n“ kann nicht gelesen werden: Keine Berechtigung
Oct 27 15:17:32 Hans gnome-session[1155]: du: das Verzeichnis „/tmp/.xrdp/xrdp-sesman-yqTUiU“ kann nicht gelesen werden: Keine Berechtigung
Oct 27 15:17:32 Hans gnome-session[1155]: du: das Verzeichnis „/tmp/.xrdp/xrdp-5M2L0E“ kann nicht gelesen werden: Keine Berechtigung
Oct 27 15:17:32 Hans gnome-session[1155]: du: das Verzeichnis „/tmp/systemd-private-3f1797004e2e4fceacc1baad91af9e67-colord.service-3EtIBW“ kann nicht gelesen werden: Keine Berechtigung
Oct 27 15:17:32 Hans gnome-session[1155]: du: das Verzeichnis „/tmp/systemd-private-3f1797004e2e4fceacc1baad91af9e67-rtkit-daemon.service-TgoTcd“ kann nicht gelesen werden: Keine Berechtigung
Oct 27 15:17:32 Hans gnome-session[1155]: du: das Verzeichnis „/tmp/systemd-private-3f1797004e2e4fceacc1baad91af9e67-cups.service-LhZ0Wi“ kann nicht gelesen werden: Keine Berechtigung
Oct 27 15:17:32 Hans gnome-session[1155]: du: das Verzeichnis „/tmp/pulse-PKdhtXMmr18n“ kann nicht gelesen werden: Keine Berechtigung

問題是我需要超級使用者權限才能執行 du 命令。是否有另一種方法來獲取 /var 目錄的目錄大小而沒有非 root 使用者的權限問題?

Debian 8.2(傑西) | Linux 3.16.0 | GNOME 外殼 3.14.4 | 康奇 1.9.0

是的,您可以授予您的使用者sudo du /var無需密碼即可執行的權限,稍後我將向您展示如何操作。然而,你真的想要這個嗎?很少有文件和子目錄du需要 root 訪問權限。報告的大小之間的差異sudo du /var很小du /var(至少在我的系統上):

$ sudo du -s /var/
1830596 /var/
$  du -s /var/
1826040 /var/

它們都解析為完全相同的千兆字節數:

$ sudo du -hs /var
1.8G    /var
$ du -hs /var
1.8G /var

那麼,這麼小的差異真的值得嗎?在我看來,一個更簡單的解決方案是通過將錯誤消息發送到以下位置來忽略它們/dev/null

/var $alignr${exec du -sh /var 2>/dev/null | awk '{print $1}'}

請注意,我刪除了head僅因為您使用了-c列印總數的選項才需要它。

因為du它很重,我懷疑你真的需要每隔幾秒鐘執行一次,你也可以告訴conky每分鐘只執行一次命令:

/var $alignr${execi 60  du -sh /var 2>/dev/null | awk '{print $1}'}

如果你覺得你真的,真的需要精確的大小/var,執行sudo visudo並添加這一行:

schmiddl ALL=NOPASSWD:/usr/bin/du -ch /var

保存文件後,使用者schmiddl將有權在sudo du -ch /var沒有密碼的情況下執行,因此您可以將其添加到您的.conokyrc

/var $alignr${execi 60  sudo du -sh /var | awk '{print $1}'}

引用自:https://unix.stackexchange.com/questions/238991