作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
uptime.log") -6ren">
我有一个非常简单的 Shiny 应用程序来显示 Shiny 服务器的 CPU 使用率和可用内存:
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
命令,所以输出表每秒更新一次,因此会闪烁,这让一切变得非常难看。
最佳答案
尝试添加
tags$style(type="text/css", ".recalculating {opacity: 1.0;}")
到您的 fluidPage
。
抱歉,以上适用于 plotOutput
。关于您的 datatable
,您需要将其设为客户端表(在 renderDataTable
中添加 server = FALSE
):
library(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(Sys.time(), load_ave, available_mem)
colnames(dat) = c("CPU usage [%]", "Available memory [Gb]")
DT::datatable(dat, rownames= FALSE)
}, server = FALSE)
}
shinyApp(ui = ui, server = server)
关于r - 重新计算时避免数据表变灰,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53747608/
COW 不是奶牛,是 Copy-On-Write 的缩写,这是一种是复制但也不完全是复制的技术。 一般来说复制就是创建出完全相同的两份,两份是独立的: 但是,有的时候复制这件事没多大必要
我是一名优秀的程序员,十分优秀!