gpt4 book ai didi

r - 杀死所有挂起时间超过一分钟的 R 进程

转载 作者:行者123 更新时间:2023-11-29 08:47:39 25 4
gpt4 key购买 nike

我使用 crontask 定期运行 Rscript。不幸的是,我需要在 aws 的一个小实例上执行此操作,并且进程可能会挂起,从而在彼此之上构建越来越多的进程,直到整个系统滞后。

我想编写一个 crontask 来终止所有持续时间超过一分钟的 R 进程。 I found another answer on Stack Overflow that I've adapted that I think would solve the problem .我想到了;

if [[ "$(uname)" = "Linux" ]];then killall --older-than 1m "/usr/lib/R/bin/exec/R --slave --no-restore --file=/home/ubuntu/script.R";fi

我直接从 htop 复制了任务,但它没有像我预期的那样工作。我收到 No such file or directory 错误,但我已经检查了几次。

我需要终止所有持续时间超过一分钟的 R 进程。我该怎么做?

最佳答案

您可能希望避免从另一个用户终止进程并在 SIGTERM(kill - 15)。这是您可以使用 CRON 作业每分钟执行的脚本:

#!/bin/bash

PROCESS="R"
MAXTIME=`date -d '00:01:00' +'%s'`

function killpids()
{
PIDS=`pgrep -u "${USER}" -x "${PROCESS}"`

# Loop over all matching PIDs
for pid in ${PIDS}; do
# Retrieve duration of the process
TIME=`ps -o time:1= -p "${pid}" |
egrep -o "[0-9]{0,2}:?[0-9]{0,2}:[0-9]{2}$"`

# Convert TIME to timestamp
TTIME=`date -d "${TIME}" +'%s'`

# Check if the process should be killed
if [ "${TTIME}" -gt "${MAXTIME}" ]; then
kill ${1} "${pid}"
fi
done
}

# Leave a chance to kill processes properly (SIGTERM)
killpids "-15"
sleep 5

# Now kill remaining processes (SIGKILL)
killpids "-9"

关于r - 杀死所有挂起时间超过一分钟的 R 进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34888361/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com