У меня есть очень простое приложение Shiny, показывающее загрузку процессора и доступную память блестящего сервера:
ui <- fluidPage(
titlePanel('Shiny Server Monitor'),
DT::dataTableOutput("cpu")
)
server <- function(input, output, session) {
output$cpu <- DT::renderDataTable({
invalidateLater(1000)
system("free -h > top.log")
system("uptime > uptime.log")
free <- readLines("top.log")
uptime <- readLines("uptime.log")
mem = strsplit(free, " ")
available_mem =tail(mem[[2]],n=1)
# I have 6 cores so normalized by deviding the load avarage to 6.
load_ave = round(as.numeric(unlist(strsplit(unlist(strsplit(uptime, ","))[4],":"))[2])/6*100,2)
dat = data.frame(load_ave,available_mem)
colnames(dat) = c("CPU usage [%]", "Available memory [Gb]")
DT::datatable(dat,rownames= FALSE)
})
}
Поскольку я использую команду invalidateLater
, выходная таблица обновляется каждую секунду ипоэтому мигает, что делает все очень уродливым.
Есть ли способ исправить эту проблему или представить результат (особенно использование ЦП) в виде команды htop
в Linux, например: