Intereting Posts
Как определить, что печатает на моей консоли? Какой из / usr / bin / perl или / usr / local / bin / perl следует использовать? Как я могу использовать установленный раздел / диск Arch как физический диск VMWare на виртуальной машине? ловушка на выходе команды не работает, если она не используется в функции или под-оболочке Как извлечь текст с помощью sed Как я могу повторить последнюю команду без использования клавиш со стрелками? Передача порта ssh через псевдотерминал Разница между двумя датами в Linux update-command-not-found Не работает Как изменить идентификатор устройства PCI моей видеокарты в системе? (для установки драйвера Quadro на GeForce) Почему Бакула не будет работать без команды label? Поиск всех типов расширений, указанных в файле html Какие приложения Linux полагаются на возможность чтения и записи в файл одновременно? postfix & dovecot – добавление фильтра спама Как отключить компьютер от SLiM при отключенном корневом входе?

Как показать простой режим работы в строке состояния tmux?

Я хочу показать время безотказной работы в строке состояния tmux в формате DD:HH:MM , без какого-либо другого сигнала, который показывает команда uptime .

Я пробовал:

 #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' 

Ни то, ни другое не работает. Я хочу просто время простоя DD:HH:MM , обновляемое каждые 30 секунд с обновлением нормальной строки состояния.

Здесь вы можете использовать awk для анализа вывода uptime в соответствии с вашими потребностями следующим образом:

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

Обычно uptime возвращает этот тип вывода:

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

Используя awk мы можем избавиться от всего, что было вовремя.

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

Вы также можете использовать /proc/uptime для получения фактических секунд, в течение которых система была вставлена, а затем использовать awk или perl для преобразования секунд в дни, часы, минуты и т. Д.

 $ 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 

Это показывает секунды безотказной работы в DD: HH: MM: SS.

Вы также можете показать их с помощью 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 

tmux цитирует?

Как отметил в комментариях @JasonwRyan в комментариях, tmux может быть трудно процитировать команды в самый раз. Вот как вы могли бы привести пример awk который я изложил выше.

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

Однако, вероятно, проще просто поместить команды в сценарий оболочки и вызвать это из файла конфигурации tmux :

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

Рекомендации

  • Преобразование секунд в дату форматирования
  • Ошибка в файле конфигурации tmux

Альтернативой является использование uptime -p :

 #(uptime -p) 

Пример вывода:

 up 4 hours, 17 minutes 

Я знаю, что это не совсем то, что вы хотели, но близко