Como mostro tempo de atividade simples na barra de status do tmux?

7

Eu quero mostrar o tempo de atividade na barra de status do tmux no formato DD:HH:MM , sem nenhuma outra mistura que o comando uptime mostre.

Eu tentei estes:

#set -g status-left '#[fg=green]#H #[fg=black]•#[fg=green,bright]#(uptime|awk '{split(substr($0, index($0, "load")),a, ":"); print a[2]})'#[default]'
set -g status-right '#[fg=red,bg=default]#(uptime) #[fg=blue]%a%d-%m-%Y %H:%M:%S'

Nem funciona como eu quero. Quero apenas um uptime direto de DD:HH:MM , atualizado a cada 30 segundos com a atualização normal da barra de status.

    
por boudiccas 17.07.2013 / 19:47

2 respostas

8

Aqui você pode usar awk para analisar a saída de uptime para atender às suas necessidades da seguinte forma:

set -g status-right '#[fg=red,bg=default]#(uptime | awk '{print $3}'|sed 's/,//') #[fg=blue]%a%d-%m-%Y %H:%M:%S'

Normalmente, uptime retorna este tipo de saída:

$ uptime
 15:30:24 up  1:59,  4 users,  load average: 2.39, 2.08, 2.12

Ao usar awk , podemos nos livrar de tudo em volta do tempo de atividade.

$ uptime | awk '{print $3}'|sed 's/,//'
2:47

Você também pode usar /proc/uptime para obter os segundos reais em que o sistema esteve ativo e, em seguida, usar awk ou perl para converter os segundos em dias, horas, minutos, etc.

$ awk '{printf("%d:%02d:%02d:%02d",($1/60/60/24),($1/60/60%24),($1/60%60),($1%60))}' /proc/uptime
0:02:49:55

Isso mostra os segundos de tempo de atividade em DD: HH: MM: SS.

Você também pode mostrá-los usando o Perl:

$ cat /proc/uptime |  perl -ne '/(\d*)/ ; printf "%02d:%02d:%02d:%02d\n",int($1/86400),int(($1%86400)/36003600)/60),$1%60' 
00:02:50:53

citando o tmux

Como @JasonwRyan mencionou nos comentários, tmux pode ser notoriamente difícil de citar os comandos corretamente. Veja como você pode citar o exemplo awk que eu forneci acima.

set -g status-right '#[fg=red,bg=default]#(uptime | awk \"{print \$3}\"|sed \"s/,//\") #[fg=blue]%a%d-%m-%Y %H:%M:%S'

No entanto, é provavelmente mais fácil simplesmente colocar os comandos em um script de shell e chamá-lo de dentro do arquivo tmux config:

set -g status-right '#[fg=red,bg=default]#(somecommand.bash) #[fg=blue]%a%d-%m-%Y %H:%M:%S'

Referências

por 17.07.2013 / 21:29
2

Uma alternativa é usar uptime -p :

#(uptime -p)

Exemplo de saída:

up 4 hours, 17 minutes

Eu sei que não é exatamente o que você queria, mas fechar

    
por 21.04.2016 / 01:23

Tags