我试图从控制服务器在远程机器上生成 beanstalk 工作人员。
我有一个函数,它需要一个主机名,将专用网络上的 SSH 连接到目标机器,然后在该机器上运行命令。
我用来生成工人的命令(当我在目标服务器的提示符下手动执行时)是:
nohup /path/to/php /path/to/file/worker.php &
输出是:
nohup: ignoring input and appending output to `nohup.out'
要返回提示,它需要一个 ctrl+c
当我从远程机器执行此操作时,脚本启动,并显示输出“worker started”,它坐在那里等待工作。我必须按 ctrl+c 才能返回提示。
当我在浏览器中使用 php 运行此命令时,它会生成工作程序,但浏览器只是挂起,最终达到 nginx 超时。我认为这是因为我用来运行命令的 shell_exec() 在运行命令后等待提示符,但这需要 ctrl+c,所以它认为命令没有完成执行。
自行运行该命令后,如何让它返回提示符?