从shell杀死无限的python脚本

时间:2018-02-01 23:22:33

标签: python linux bash shell

嗨我有5个无限的python脚本。我想先运行第一个脚本,1小时后终止第一个脚本,然后运行第二个无限脚本,1小时后终止第二个脚本。它的代码是什么问题?我怎么能 ?请不要建议我给python脚本时间。我可以做id,但它对我的项目没用。只需要从shell中杀死无限的脚本。非常感谢你

  

我的SHELL SCRIPT

#!/bin/bash

START=`date +%s`
while true
do
    if [ $(( $(date +%s) - 10 )) -lt $START ]; then
        python infinite.py
    else
        pkill python
        break
    fi
done

START=`date +%s`
while true
do
    if [ $(( $(date +%s) - 10 )) -lt $START ]; then
        python infinite.py
    else
        sudo pkill python
        break
    fi
done

START=`date +%s`
while true
do
    if [ $(( $(date +%s) - 10 )) -lt $START ]; then
        python infinite.py
    else
        pkill python
        break
    fi
done
  

它的我的PYTHON SCRIPT

x = 0
while True:
    print("Hello, World ! " + str(x))
    x +=1

2 个答案:

答案 0 :(得分:1)

GNU coreutils附带timeout工具。

按顺序运行五个脚本,infinite1.py到infinite5.py,每个小时一小时:

for script in infinite_{1..5}.py
do
   timeout 1h python "$script"
done

答案 1 :(得分:0)

此代码将在一小时内在后台运行您的脚本,然后终止该过程

START=$(date '+%s')
python infinite.py &
while true
do
    if [ $(( $(date '+%s') - $START )) -lt 3600 ]; then
        echo "Still running"
    else
        pkill -f 'infinite.py'
        break
    fi
done