![설정 편집기](https://linux55.com/image/84084/%EC%84%A4%EC%A0%95%20%ED%8E%B8%EC%A7%91%EA%B8%B0.png)
매분 실행되도록 crontab -e를 통해 cronjob을 추가했습니다. systemctl에서 cronie를 활성화하고 시작했습니다.
설정 편집기
$ export EDITOR=vim
크론 작업 추가
$ crontab -e
* * * * * Rscript /srv/shiny-system/cron/CPU.R
~
~
"/tmp/crontab.8VZ7vq" 1 line, 47 characters
크로니 설치
$ sudo pacman -Syu cronie
$ sudo systemctl enable --now cronie.service
$ systemctl status cronie
크론 작업 나열
$ crontab -l
* * * * * Rscript /srv/shiny-system/cron/CPU.R
아래에 R로 이 프로그램을 작성했고 쉘에서 시작하면 제대로 작동하지만 cronie로 시작하면 예상대로 작동하지 않습니다.
setwd("/srv/shiny-system/cron")
I <- 0
for (i in 1:60) {
system("top -n 1 -b -u shiny > top.log")
dat <- readLines("top.log")
id <- grep("R$", dat)
Names <- strsplit(gsub("^ +|%|\\+", "", dat[7]), " +")[[1]]
if (length(id) > 0) {
# ‘top’ data frame;
L <- strsplit(gsub("^ *", "", dat[id]), " +")
dat <- data.frame(matrix(unlist(L), ncol = 12, byrow = T))
names(dat) <- Names
dat <- data.frame(Time = Sys.time(), dat[, -ncol(dat)], usr = NA, app = NA)
dat$CPU <-as.numeric(as.character(dat$CPU))
dat$MEM <-as.numeric(as.character(dat$MEM))
# Check if connection number changed;
for (i in 1:length(dat$PID)) {
PID <- dat$PID[i]
system(paste("sudo -i netstat -p | grep ", PID, " > netstat.log"))
# system(paste("sudo -i netstat -p | grep ", PID, " >> netstat.log2"))
system(paste("sudo -i lsof -p ", PID, " | grep DIR > lsof.log"))
netstat <- readLines("netstat.log")
lsof <- readLines("lsof.log")
dat$usr[i] <- length(grep("ESTABLISHED", netstat) & grep("tcp", netstat))
dat$app[i] <- regmatches(lsof, regexec("srv/shiny-server/(.*)", lsof))[[1]][2]
}
dat <- dat[, c("app", "usr")]
} else {
dat <- data.frame(app = "app1", usr = 0)
}
write.table(dat, file = "CPU.txt")
}
프로그램은 다음 4개의 파일과 크로니를 생성합니다.~인 것 같다bcos를 실행하려면 /srv/shiny-system/cron 위치에서 이를 볼 수 있습니다.
top.log
netstat.log
lsof.log
CPU.txt
netstat.log
하지만 문제는 로그/데이터/정보가 없다는 것입니다.lsof.log
그렇다면 이것이 내 R 프로그램이나 친구에 문제가 있는 걸까요?
하지만 cron을 사용하여 이 프로그램을 실행하면우분투리눅스netstat.log
, 그리고 에서 원하는 데이터를 얻습니다 lsof.log
.
그렇다면 이것은 Arch Linux의 버그/문제입니까? Arch가 netstat
및 에 문제가 있는 것 같습니다 lsof
. 저도 netstat
설치했는데,
netstat용 네트워크 도구 설치
$ sudo pacman -S net-tools
어떤 아이디어가 있나요?