![当我使用 rc.local 脚本在启动时运行我的 minecraft 服务器时,如何控制它?](https://linux22.com/image/1487571/%E5%BD%93%E6%88%91%E4%BD%BF%E7%94%A8%20rc.local%20%E8%84%9A%E6%9C%AC%E5%9C%A8%E5%90%AF%E5%8A%A8%E6%97%B6%E8%BF%90%E8%A1%8C%E6%88%91%E7%9A%84%20minecraft%20%E6%9C%8D%E5%8A%A1%E5%99%A8%E6%97%B6%EF%BC%8C%E5%A6%82%E4%BD%95%E6%8E%A7%E5%88%B6%E5%AE%83%EF%BC%9F.png)
我有个问题想问你们。我运行了一个 MC 服务器,到目前为止一切顺利。为了使它自主运行,我在启动时使用 rc.local 中的 bash 脚本加载来运行它,很简单。
#!/bin/bash
cd /home/minecraft sudo java -Xms512M -Xmx1008M -jar /home/minecraft/spigot-1.9.jar nogui
好的,问题是当我通过 ssh 连接时,我看不到服务器。它正在运行,因为我可以毫无问题地玩,但我无法控制它。
当我使用脚本中的命令运行服务器,但在启动时没有,服务器一直在屏幕上,等待命令并显示信息,但是当从启动脚本运行它时,我看不到任何内容。
如果我从启动时运行它并稍后通过 ssh 连接,我如何获得控制权或查看服务器屏幕?
希望您能理解我的意思。提前谢谢您,祝您有美好的一天。
答案1
除非您连接到设备的物理控制台,否则脚本中启动的大多数操作的控制台输出rc
对您都是不可用的。如果您手动启动 MC 服务器然后注销,情况也是如此。您可以将输出记录到文件中,但这无助于您稍后在其中输入命令。有两种工具可以解决此问题:屏幕和tmux。两者都将保留您的流程的输入和输出句柄,并允许您稍后重新连接它们。 screen
一直存在,但不是为自动化而设计的。 tmux
较新且不太知名,但更容易实现自动化,因此我将演示:
tmux new-session -s demo -n tab_name -d "sudo top"
将启动一个名为的新 tmux 会话,demo
其中包含一个名为tab_name
running的选项卡sudo top
。当您运行此控件时,它将返回到 shell,并且您不会top
立即看到。这很好,因为这意味着您可以将其放入rc
脚本中,并且它不会阻止它们。然后,无论何时您想要访问它,只需:
tmux attach
以您开始操作时使用的同一用户身份,您将可以访问命令的输入和输出。要退出,tmux
请按ctrl- b,d这将带您返回到 之外的 shell tmux
。
这是一个简介您可能会发现学习的下一步进展很好tmux
。