虚心使人进步

虚心学习,天天向上......
posts - 198, comments - 160, trackbacks - 0, articles - 2
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

转 python多个命令同时执行.sh

Posted on 2019-11-23 10:26  Showker  阅读(437)  评论(0编辑  收藏

1、背景是

有三个脚本a.py, b.py, c.py
三个都是爬虫,里面都是while(true)方式运行的,不会主动运行结束。

每次启动他们,就需要:

python a.py > logs/a.log
python b.py > logs/b.log
python c.py > logs/c.log

2、上linux批处理:

有点麻烦,想搞个批处理:

#!/bin/sh
python a.py > logs/a.log
python b.py > logs/b.log
python c.py > logs/c.log

3、发现有问题

运行发现只有一个python进程,看日志发现只有a运行了,b和c都没跑起来。
估计因为shell是顺序执行的,a没执行完,所以不会去执行b和c,查了一下果然。

4、同时运行方案

不过shell也提供了一个同时运行多个命令的方式:&符号。

于是修改为:

#!/bin/sh
python a.py > logs/a.log & python b.py > logs/b.log & python c.py > logs/c.log

就可以同时运行三个脚本了。

5、再加工一下

再加工一下,启动前先停止所有py进程:

#!/bin/sh
ps -ef | grep python | cut -c 9-15| xargs kill -s 9
python a.py > logs/a.log & python b.py > logs/b.log & python c.py > logs/c.log

保存为restart.sh
可执行权限:chmod +x restart.sh



作者:老胡de博客
链接:https://www.jianshu.com/p/0f72afb513ab
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。