shell - 在Linux下如何限制命令执行的时间?
迷茫
迷茫 2017-04-17 11:43:51
[Linux讨论组]

RT,比如要执行xx命令,但是在某些情况下该命令会hang住,所以希望如果2s内执行不完就返回,如何操作?

迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

全部回复(7)
巴扎黑

如果是在shell环境下的话,可以用last_pid=$!记录上一个命令的进程ID,然后在sleep 2 && kill -9 $last_pid来解决。
如果是C++程序的话,可以用setrlimit来限制子进程的运行资源(包括CPU时间),另外再加上定时器alarmsignal来组织子进程进行无限制的sleep。原先写过篇blog,希望对你有帮助。

迷茫

受不了了,明明就有现成的
TIMEOUT(1)

PHPz

定时器,然后在信号处理函数中处理。

阿神
function __EXEC_COMMAND_WITH_TIMEOUT() {
    COMMAND=$1
    TIMEOUT=$2

    $COMMAND 2> /dev/null &
    PID=$!
    sleep $TIMEOUT && ps -p $PID -o pid,ppid | grep $$ | awk "{print $1}" 2> /dev/null | xargs kill &
    wait $PID

    return $?
}
伊谢尔伦

command & pid=$! ;sleep 2;kill -9 $pid

PHP中文网

你们写这么多有没有考虑过coreutils的感受啊, 它本身就带了timeout程序。

天蓬老师

可以 fork 一个子进程
父进程记录此刻时间
然后在子进程里执行你要执行的 xx 命令
父进程等待2s 后 杀掉子进程就可以了

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号