使用 PHP 在 tmux 会话中运行命令

Posted

技术标签:

【中文标题】使用 PHP 在 tmux 会话中运行命令【英文标题】:Running a command inside tmux session using PHP 【发布时间】:2021-03-08 20:12:14 【问题描述】:

我正在尝试使用 php 和以下代码在 tmux 会话中启动 nodejs 服务器:

print_r(shell_exec("tmux send -t session1.0 ./start.sh ENTER 2>&1"));

此代码返回:no server running on /tmp/tmux-33/default。我使用tmux new -s session1 和root 帐户创建了这个会话(session1)。当我尝试使用 php (print_r(shell_exec("tmux new -s worker1 2>&1"));) 启动会话时,这将返回 open terminal failed: not a terminal

如何使用 PHP 启动 nodejs 服务器?

【问题讨论】:

【参考方案1】:

Tmux 在 unix 上按用户工作,因此基本上您必须在运行脚本时使用的用户上创建该终端。所以如果它由网络服务器运行,它可能是www-data。如果您从 CLI 运行脚本,只需使用当前用户而不是 root。

查看示例:

<?php 
print_r(shell_exec('tmux ls')); // print all sessions

//shell_exec('tmux new -s example'); // you can even create session directly from php

shell_exec('tmux send -t example.0 ls ENTER'); //send the commend `ls`

【讨论】:

以上是关于使用 PHP 在 tmux 会话中运行命令的主要内容,如果未能解决你的问题,请参考以下文章

终端恢复软件tmux的使用

Tmux会话-基本操作及原理

asdf 命令不再在 tmux 会话中工作

Tmux简单使用

Tmux使用说明

Linux命令集锦:tmux命令