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



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

  • 创建屏幕
  • 在其中启动"nodejs file.js"命令
  • 迪斯塔克
  • 使"开发人员"组中的每个用户都可以访问屏幕

现在这是我写的 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

在多屏中:

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

但这也不起作用。

问题似乎是您的 shell 脚本只会在您退出屏幕后启动机器人。让我们来看看这些命令的作用。

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

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

screen -r botScreen

这将附加到之前创建的屏幕从而等到您退出或分离(Ctrl + A,D(从屏幕上。

screen -d -m nodejs init_bot.js

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


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

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

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

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

这将与机器人一起在屏幕中sh运行,然后在机器人终止时运行 bash 以获取屏幕内的交互式 shell。

相关内容

  • 没有找到相关文章

最新更新