如何逐个顺序运行20 - 30个脚本并在执行最后一个脚本之后 - 再次运行第一个脚本并按小时运行此迭代?
我尝试使用crontab来实现它,但这是一种笨重的方式。我想保证每个时刻只运行一个脚本。每个脚本的执行时间约为1分钟。
我为这样的目标编写了一个bash脚本,并考虑使用cron每小时运行它:
if ps ax | grep $0 | grep -v $$ | grep bash | grep -v grep
then
echo "The script is already running."
exit 1
else
python script1.py
python script2.py
python script3.py
...
python script30.py
fi
但这是一个好方法吗?
答案 0 :(得分:2)
对@twaxter 的更正:
import subprocess
program_list = ['script1.py', 'script2.py']
for program in program_list:
subprocess.call(['python', program])
print("Finished:" + program)
答案 1 :(得分:1)
您可以使用for循环:
scripts = "script1.py script2.py script3.py"
for s in $scripts
do
python $s
done
答案 2 :(得分:1)
根据这个问题,我假设您只希望在较旧的程序完成后才运行下一个程序。
我建议使用subprocess.call,它仅在被调用的程序完成执行后才返回到函数的调用。
这是一个例子。当script1完成后,它将运行script1,然后运行script2。
import subprocess
program_list = ['script1.py', 'script2.py']
for program in program_list:
subprocess.call(['python', 'program'])
print("Finished:" + program)
答案 3 :(得分:0)
您还可以使用exec
命令:
program_list = ["script1.py", "script2.py"]
for program in program_list:
exec(open(program).read())
print("\nFinished: " + program)
答案 4 :(得分:0)
如果您的文件与 glob 模式匹配
console.log(this)