停止从Python启动的终端中的程序

时间:2015-01-14 15:43:15

标签: python shell system

我有一个python脚本从系统启动另一个程序(shell脚本实际上调用程序本身,tag-bm.sh):

def tag(obt_path, corpora_path):
    print corpora_path
    os.system('cd ' + obt_path + ' && ./tag-bm.sh ' + corpora_path + ' > ' + corpora_path + '.obt')
    os.system('pwd')

有时这个程序会进入无限循环,这会给我的主程序带来问题。有没有办法设置,如果程序没有在一段时间内结束python会破坏它?

1 个答案:

答案 0 :(得分:2)

找出命令的名称,例如,如果它是cp,那么您可以使用pgrep cppidof cp获取命令的pid。请注意,这将返回所有cp进程的pids。在您启动命令后立即调用pgrep,它应位于顶部,因此该情况​​下的pid为pgrep cp | head -n1pidof cp | cut -s -f1。存储此变量并在以后的某个时间终止它。

或者您可以使用timeout运行命令,您可以添加一个值,之后命令将自动接收终止信号。用法示例:timeout 500s cp large_file destination_file。在这种情况下,cp将在500秒后被杀死。 `man timeout'获取更多信息。

相关问题