You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:编写Shell脚本实现devs组多用户共享Screen/Tmux会话

我来帮你解决这个共享会话的问题!你需要创建一个能让devs组全体用户访问的会话,同时运行Node.js脚本,我分别给你梳理Screen和Tmux的正确实现方法:

一、Screen 实现方案

你之前的配置和脚本有两个关键问题:一是不知道怎么给整个组添加权限,二是脚本的执行逻辑有误。

1. 修正配置文件

Screen 支持通过%前缀指定组,修改你的_shared-conf/multi-screen.conf:

multiuser on
acladd %devs  # 用%开头表示添加整个devs组的访问权限
# 如果需要单独添加某个用户,继续保留即可
# acladd rackover
# acladd jj

2. 修正启动脚本

你原来的脚本里screen -r会尝试连接会话,导致后续命令无法执行。正确的写法是先创建分离式会话,再向会话发送执行命令:

#!/bin/bash
# Launcher script for js bot
# 创建带自定义配置的分离式会话
screen -c ./_shared-conf/multi-screen.conf -dmS botScreen
# 向会话发送Node.js命令(末尾的\n模拟回车执行)
screen -S botScreen -X stuff "nodejs init_bot.js\n"

3. 其他用户访问方式

devs组的用户只需要执行以下命令就能加入共享会话:

screen -x 你的用户名/botScreen

(把你的用户名替换成创建会话的那个用户,比如你是rackover,就写rackover/botScreen)

二、Tmux 实现方案

你之前的Tmux操作逻辑不对,正确的共享流程应该是这样的:

1. 创建会话并配置组权限(以Alice为例)

直接在命令行创建分离式会话并配置权限,不用进入会话操作:

# 创建分离式会话,同时运行Node.js脚本
tmux new -d -s bot_session "nodejs init_bot.js"
# 开启会话的多用户访问权限
tmux set -s -t bot_session allow-access on
# 给devs组添加会话访问权限
tmux acl add -t bot_session -g devs

如果需要进入会话调整参数(比如开启鼠标支持),可以先执行tmux attach -t bot_session,按下Ctrl+b后输入:set -g mouse on,再按下Ctrl+b d分离会话。

2. 其他用户访问方式

devs组的用户(比如Bob)直接执行以下命令就能加入会话:

tmux attach -t bot_session

你之前操作的问题

你让Bob用tmux new -s bob -t alice的方式是错误的,这是创建一个关联到alice会话的新会话,但没有配置权限的话无法正常访问。正确的方式是直接attach到目标会话,前提是创建者已经给devs组开了权限。

注意事项
  • 确保devs组存在,且所有需要访问的用户都在这个组里,可以用groups 用户名命令检查用户所属组
  • Screen配置文件要确保创建会话的用户有读取权限
  • Tmux如果是旧版本(低于2.3),acl add命令可能不支持,需要用tmux set -g @acl 'devs'之类的替代方式,建议升级到新版Tmux获得更好的权限管理支持

内容的提问来源于stack exchange,提问作者Rackover

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:59:33