我查了我找到的每个教程,但没有一个真正回答我的问题。我正在寻找一种制作脚本的方法,它将:
- 创建屏幕
- 在其中启动"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。