V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
karlxu
V2EX  ›  问与答

Python 里怎么监控一行命令超时就强行杀死?

  •  
  •   karlxu · 2016-01-11 19:47:21 +08:00 · 2486 次点击
    这是一个创建于 3239 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我脚本里用 os.system 方式调用 phantomjs ,但是有时 phantomjs 可能会挂死,无法退出,所以想对吊起 phantomjs 时进行超时监控,超过一定时间,进程还在就用 os.system(kill -9),但不知道怎么写了。。。
    8 条回复    2016-03-09 21:39:03 +08:00
    Zzzzzzzzz
        1
    Zzzzzzzzz  
       2016-01-11 19:55:31 +08:00
    用 timeout 命令就行了.
    karlxu
        2
    karlxu  
    OP
       2016-01-11 20:36:07 +08:00 via Android
    @Zzzzzzzzz 可以具体点吗?我搜了下没找到相关的例子。谢谢了
    Zzzzzzzzz
        3
    Zzzzzzzzz  
       2016-01-11 20:44:47 +08:00
    @karlxu os.system("timeout -s 9 3 sleep 1000")
    karlxu
        4
    karlxu  
    OP
       2016-01-11 20:50:18 +08:00 via Android
    @Zzzzzzzzz 这是 dos 下的吧? linux 好像没这个命令
    Zzzzzzzzz
        5
    Zzzzzzzzz  
       2016-01-11 20:54:35 +08:00   ❤️ 1
    @karlxu 就是 linux 下 coreutils 包里的, 一般发行版里都是默认安装的基本命令.
    yangtukun1412
        6
    yangtukun1412  
       2016-01-11 21:07:58 +08:00   ❤️ 1
    可以使用 signal 中的 alarm 信号,示例见官方文档

    https://docs.python.org/2/library/signal.html#example
    karlxu
        7
    karlxu  
    OP
       2016-03-04 16:47:46 +08:00
    @Zzzzzzzzz 请教下 windows 系统下有什么好使的命名可以超时杀掉吗?我试了下 timeout 在 windows 下等于 sleep 的功能
    Zzzzzzzzz
        8
    Zzzzzzzzz  
       2016-03-09 21:39:03 +08:00
    @karlxu 这个倒真不知道, 很久没在 windows 下面搞过开发了, 要不装个 cygwin 试下里面的 timeout?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   994 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 1405ms · UTC 20:04 · PVG 04:04 · LAX 12:04 · JFK 15:04
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.