跳转到内容

后台运行

如何保持服务器在 Linux 服务器中后台运行

Section titled “如何保持服务器在 Linux 服务器中后台运行”

由于 Linux 的会话机制,在 SSH 断开连接之后手动启动的服务端会停止运行,而我们需要服务端保持后台运行。

使用 screen 创建一个虚拟的窗口运行服务端,首先安装 screen,在终端输入:

确保你的系统上有 screen 包,没有的话安装它们:

bash apt-get install screen

screen 的基础指令:

Terminal window
screen -ls # 列出所有的 screen
screen -S xxx # 创建一个名叫 xxx 的虚拟窗口 (推荐以每个子服务器命名)
screen -r xxx # 进入 xxx 虚拟窗口 (只能进入已创建且无人使用的 screen)
screen -D xxx # 踢出正在使用 xxx 窗口的用户
screen -S xxx -X quit # 删除 xxx 窗口 (在 screen 中输入 exit 也可以删除)

在 screen 中启动服务端,在 screen 中时,按快捷键 Ctrl + A + D 即可返回原窗口。

推荐原因:后台运行的同时还可以在服务端控制台中查看日志,打指令

例如 MCSManager 等面板,简单无脑可视化

使用 vim 命令创建 mc.service 单元文件

Terminal window
vim ~/.config/systemd/user/mc.service

文件中的内容按以下配置

[Unit]
Description=Minecraft Server
After=network.target
[Service]
WorkingDirectory=这里填工作目录路径
ExecStart=这里填启动命令
ExecStop=/bin/kill -SIGINT $MAINPID
Restart=on-failure
[Install]
WantedBy=multi-user.target

配置完成后输入以重新加载:

Terminal window
systemctl daemon-reload

然后启动服务器并设置开机启动,先后输入:

Terminal window
systemctl --user start mc.service
systemctl --user enable mc.service

可以通过 systemctl --user status mc.service 查看服务运行状态。

详细设置说明

Arch Wiki 上的教程

优点:可以实现自动重启,开机自启等操作

缺点:无法进入控制台打指令

&:在启动时后面加一个 &

例如:./start.sh &

nohup:在启动时前面加上这个

例如:nohup ./start.sh > run.log 2>&1 &

详细参数: