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 命令。对于非 root 用户,是否有另一种方法可以获取 /var 目录的目录大小而不会出现权限问题?
Debian 8.2(杰西) | Linux 3.16.0 | GNOME 外壳 3.14.4 |康琪1.9.0
答案1
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}'}