来自shell脚本的多用户屏幕会话

时间:2018-01-12 11:17:08

标签: shell sh tmux gnu-screen

我查找了我发现的每个教程,但没有一个真正回答我的问题。 我正在寻找制作脚本的方法:

  • 创建一个屏幕
  • 启动" nodejs file.js"命令
  • Distach
  • 让群组中的每个用户都可以访问该屏幕" devs"

现在这里是我写的shell脚本:

#!/bin/bash
# Launcher script for js bot

screen -c ./_shared-conf/multi-screen.conf -dmS botScreen
screen -r botScreen
screen -d -m nodejs init_bot.js

并在multi-screen.conf中:

multiuser on
acladd rackover # adding every user manually as i don't know how to add group
acladd jj
你能帮帮我吗?感谢

编辑:我一直在尝试使用TMUX,到目前为止我已经尝试过这个:

Again, Alice and Bob ssh into the same server
Alice, as before, creates a new tmux session: tmux new -s alice. tmux will 
implicitly create a new window group
Bob does not join that same session. Instead he starts a new session and 
connects that session to the same window group as Alice’s session: tmux new -s bob -t alice

但这也不起作用。

1 个答案:

答案 0 :(得分:0)

问题似乎是您的shell脚本仅在退出屏幕后才启动bot。让我们来看看命令的作用。

screen -c ./_shared-conf/multi-screen.conf -dmS botScreen

这将使用给定的配置创建一个屏幕,并且该屏幕不会附加。

screen -r botScreen

这会附加到在之前创建的屏幕,因此将一直等到您退出或从屏幕分离(Ctrl + A,D)。

screen -d -m nodejs init_bot.js

这将创建另一个运行脚本的分离屏幕。


解决方案是用一个命令完成所有操作。要简单地运行该bot,然后在bot停止后终止屏幕,请在末尾添加nodejs命令:

screen -c ./_shared-conf/multi-screen.conf -dmS botScreen nodejs init_bot.js

如果您希望屏幕在机器人停止运行后继续运行,则可以使用here中的解决方案:

screen -c ./_shared-conf/multi-screen.conf -dmS botScreen sh -c 'nodejs init_bot.js; exec bash'

这将与机器人在屏幕上运行sh,然后在机器人终止时运行bash以在屏幕内获取交互式外壳。