我有一个服务器,它运行我们数据库的后端脚本(ETL进程等)。然而,一天两小时,我们把它用于发送电子邮件。电子邮件是最重要的,然而,有时它们变得非常内存密集型和服务器上的所有进程崩溃。因此,我希望在电子邮件系统运行时暂停所有ETL脚本(用Python编写)。一旦它完成,我会希望它恢复这些脚本,一旦电子邮件系统完成。
假设电子邮件系统运行在具有以下可执行文件的三个cron上:
/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脚本。从堆栈交换上的搜索来看,我似乎可以运行以下操作:
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上运行的。任何其他建议也将不胜感激。谢谢。
我的系统的解决方案如下:
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发布于 2016-02-27 14:28:10
发布于 2016-02-27 14:28:27
检查killall或pkill (pgrep)。
但是,我认为最好的方法是:设置一个简单的仅发送MTA,其中包含队列消息,并将其设置为高优先级(使用nice),这样您的PHP代码就不会中断,并且发送(在网络上创建缓慢连接,在另一侧反垃圾邮件功能上创建缓慢的初始连接)可以并行进行,而不会减慢其余部分。
https://unix.stackexchange.com/questions/266161
复制相似问题