我在php中遇到tmux / screen问题。 当我尝试启动屏幕会话时没有任何反应。 当我尝试启动一个tmux会话时,它只有在我给www-data shell访问时才有效,即便没有添加窗口:(
我想要实现的目标: 我想为我在虚拟机上运行的某些进程编写Web界面代码。 为此,我写了一些脚本(因为我在linux debian机器上,所以在bash中)。 这些脚本需要做一些事情: - 启动一个新的tmux窗口(如果它还不存在,则启动会话) - 查看tmux窗口是否正在运行/活动 - 停止进程(自动关闭窗口) 并手动执行(在终端中)这些脚本的行为符合要求。
现在,webinterface将启动这些脚本(因此它们将通过php中的exec函数执行)。
由于它们运行在php上,因此它们以用户www-data运行,因此我无法访问由www-data创建的tmux会话。
所以我在启动Window / session时有一些建议:
所以我的命令最终看起来像这样:
tmux -S /tmp/pairedsession.socket new-session -d -s "ProcessGroup1"
此命令有问题:
但仍有一些问题:
正如我之前所说,我想创建一些窗口来处理进程 该命令如下所示:
tmux -S $SocketLocationPath new-window -t "$SessionName" -n "$WindowName" "$cmd"
这适用于但只适用于全局进程(如htop)或php目录中的进程(与其他脚本一样) 我想要做的是在自己的工作目录中执行一个进程,该目录不一定在php目录中 - >我如何改变它
我尝试了什么
可能的解决方案
另一个奇怪的事情:当通过php启动tmux会话时,终端没有用户也没有位置 通常它看起来像user @ machinename $ ... 使用PHP它看起来只是$ ...仅此而已
我希望有人可以帮助我,因为我不喜欢这些凌乱的解决方法:/
提前谢谢 - 超级模糊
经过一番挣扎,借助googleguy @ freenode #php,我终于打败了这个。
事实证明,PHP 7.1(在我的情况下)根本没有这样的问题。
我成功执行了这个序列:
shell_exec("tmux new-session -s session_name -d");
shell_exec("tmux send -t session_name gedit ENTER");
戳我,它不适合你