我有大约25个Screen会话运行PHP脚本。
我如何知道哪些仍在运行从该Screen会话启动的PHP进程,而不必恢复每个Screen?我是否可以使用screen或linux的内置功能从命令行访问这些信息,还是必须编写脚本来处理这些信息?
我从命令行开始我的屏幕会话,并以同样的方式执行PHP脚本。
如果我的记忆正确的话,当程序完成运行时,屏幕会话(如果用命令开始,我认为是-x)将杀死自己(屏幕将退出),因此您可以解析screen -list
并查看屏幕(带有您分配的会话名称)是否仍然存在。
或者(和我要做的),你可以添加一个运行行的表,当脚本在屏幕上启动(信息像它正在做什么,预期完成时间,屏幕上运行等)。然后让屏幕在完成时从数据库中删除行,这样你就能很好地看到正在发生的一切,以及它在哪里发生。
您甚至可以限制屏幕的数量,并在后台运行一个管理程序来为屏幕分配作业(检查数据库中的屏幕何时打开)。
就我个人而言,我会运行一个cronjob或脚本,将ps auxw | grep screen
,然后循环通过每行,使用awk
和其他好工具来查看当前在tty上运行的内容和tty的空闲时间…很有可能,如果PHP脚本已经完成运行,它将显示在tty上没有任何运行,您可以关闭该屏幕,甚至只是关闭tty…