tamanho do diretório em conky

1

Conky é um software de monitor de sistema. Eu quero mostrar o tamanho do diretório / usr e / var. Infelizmente eu não encontrei nenhum comando conky, então eu fiz o meu próprio.

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

Funciona como esperado para o meu diretório / usr. O mesmo comando para o diretório / var bagunça meu syslog:

#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

O problema é que eu preciso de direitos de superusuário para executar o du comando. Existe outra maneira de obter o tamanho de diretório do diretório / var sem problemas de permissão para usuários não root?

Debian 8.2 (jessie) | Linux 3.16.0 | GNOME Shell 3.14.4 | Conky 1.9.0

    
por schmiddl 27.10.2015 / 15:33

1 resposta

1

Sim, você pode conceder ao seu usuário o direito de executar sudo du /var sem senha. Mostrarei mais tarde. No entanto, você realmente quer isso? Existem muito poucos arquivos e subdiretórios para os quais du precisa de acesso root. A diferença é relatada tamanho entre sudo du /var e du /var é pequena (pelo menos no meu sistema):

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

Ambos resolvem exatamente o mesmo número de gigabytes:

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

Então, uma diferença tão pequena realmente vale a pena? Parece-me que uma solução muito mais simples seria simplesmente ignorar as mensagens de erro enviando-as para /dev/null :

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

Observe que removi o head , pois isso era necessário porque você estava usando a opção -c para imprimir o total.

Como du é muito pesado e duvido que você realmente precise dessa execução a cada alguns segundos, você também pode dizer a conky para executar o comando apenas uma vez por minuto:

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

Se você acha que realmente precisa do tamanho preciso de /var , execute sudo visudo e adicione esta linha:

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

Depois de salvar o arquivo, o usuário schmiddl terá o direito de executar sudo du -ch /var sem uma senha, para que você possa adicioná-lo ao seu .conokyrc :

/var $alignr${execi 60  sudo du -sh /var | awk '{print $1}'}
    
por 27.10.2015 / 16:36