В выводе uptime
обычно указано «x дней, y мин» или «x дней, y: z», но иногда, если время безотказной работы меньше дня, в первый раз указываются часы / минуты: основанный на выводе и не беспокоится о количестве дней. Остальная часть вывода очень согласована с точки зрения количества столбцов. В результате лично я использовал sed, чтобы просто удалить последние четыре столбца:
$ uptime | sed -e 's/^ [^ ]* up \(.*\)\(,[^,]*\)\{4\}$/\1/'
31 days, 35 min
В качестве альтернативы, если вам нужны только самые важные данные, вы можете использовать аналогичный метод, упомянутый другими, где вы просто получаете первый бит данных. Менее чем за сутки это приведет к <y> min
или <y>:<z>
. Если у вас будет больше суток, это приведет к <x> days
.
$ uptime | sed -e 's/^ [^ ]* up \([^,]*\).*/\1/'
31 days
Наконец, если вы хотите отразить ноль, когда он составляет менее 24 часов, у вас также есть возможность использовать некоторые математические вычисления для /proc/uptime
, используя bc
или выражения оболочки:
$ uptime
13:58:41 up 31 days, 55 min, 9 users, load average: 0.80, 0.89, 0.81
$ echo $(( $(awk -F . '{print $1}' /proc/uptime) / 86400)) days
31 days
$ uptime
13:59:01 up 21:18, 1 user, load average: 0.00, 0.00, 0.00
$ echo $(( $(awk -F . '{print $1}' /proc/uptime) / 86400)) days
0 days
person
zaTricky
schedule
19.07.2018