杀死所有持续超过一分钟的R进程

我使用crontask来定期运行Rscript.不幸的是,我需要在一小部分aws中执行此操作,并且进程可能会挂起,从而建立越来越多的进程,直到整个系统滞后.

我想写一个crontask来杀死持续时间超过一分钟的所有R进程.我想出了

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

我直接从htop复制了任务,但是没有像我所期望的那样工作.我得到没有这样的文件或目录错误,但我已经检查了几次.

我需要杀死持续时间超过一分钟的所有R进程.我该怎么做?

您可能希望避免从其他用户杀死进程,并在SIGTERM(kill -15)之后尝试SIGKILL(kill -9).这是一个脚本,您可以使用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"

相关文章

用的openwrt路由器,家里宽带申请了动态公网ip,为了方便把2...
#!/bin/bashcommand1&command2&wait从Shell脚本并行...
1.先查出MAMP下面集成的PHP版本cd/Applications/MAMP/bin/ph...
1、先输入locale-a,查看一下现在已安装的语言2、若不存在如...
BashPerlTclsyntaxdiff1.进制数表示Languagebinaryoctalhexa...
正常安装了k8s后,使用kubect工具后接的命令不能直接tab补全...