首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >暂停并重新启动所有Python进程

暂停并重新启动所有Python进程
EN

Unix & Linux用户
提问于 2016-02-27 14:17:53
回答 2查看 1.5K关注 0票数 0

我有一个服务器,它运行我们数据库的后端脚本(ETL进程等)。然而,一天两小时,我们把它用于发送电子邮件。电子邮件是最重要的,然而,有时它们变得非常内存密集型和服务器上的所有进程崩溃。因此,我希望在电子邮件系统运行时暂停所有ETL脚本(用Python编写)。一旦它完成,我会希望它恢复这些脚本,一旦电子邮件系统完成。

假设电子邮件系统运行在具有以下可执行文件的三个cron上:

代码语言:javascript
复制
/usr/bin/php /home/Email/main.php --action=set1
/usr/bin/php /home/Email/main.php --action=set2
/usr/bin/php /home/Email/main.php --action=set3

我可以将这三个文件打包到一个脚本文件中。但是,在该脚本中,我需要暂停并启动所有Python脚本。从堆栈交换上的搜索来看,我似乎可以运行以下操作:

代码语言:javascript
复制
kill -TSTP [pid]
/usr/bin/php /home/Email/main.php --action=set1 &
/usr/bin/php /home/Email/main.php --action=set2 &
/usr/bin/php /home/Email/main.php --action=set3 &
wait
kill -CONT [pid]

其中pid是我的Python脚本的进程pid(有多个脚本)。我的问题是,如何调整它以检索所有正在运行的Python脚本的pid,并在其中循环它们?注意:这是在Ubuntu14.04.2上运行的。任何其他建议也将不胜感激。谢谢。

溶液

我的系统的解决方案如下:

代码语言:javascript
复制
pkill -STOP python
/usr/bin/php /home/Email/main.php --action=set1
/usr/bin/php /home/Email/main.php --action=set2
/usr/bin/php /home/Email/main.php --action=set3
pkill -CONT python
EN

回答 2

Unix & Linux用户

回答已采纳

发布于 2016-02-27 14:28:10

要了解进程的pids,可以使用pgrep

在您的情况下,可以使用pkill

代码语言:javascript
复制
pkill -TSTP Email 
pkill -CONT Email 

尽管可能更好地匹配进程名是明智的。

票数 2
EN

Unix & Linux用户

发布于 2016-02-27 14:28:27

检查killallpkill (pgrep)。

但是,我认为最好的方法是:设置一个简单的仅发送MTA,其中包含队列消息,并将其设置为高优先级(使用nice),这样您的PHP代码就不会中断,并且发送(在网络上创建缓慢连接,在另一侧反垃圾邮件功能上创建缓慢的初始连接)可以并行进行,而不会减慢其余部分。

票数 2
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/266161

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档