Ubuntu设置开机启动脚本
想在开机的时候自动启动Minecraft的服务器,这样就可以不用每次开机都去手动启动了。
研究了一下如何在Ubuntu上设置开机启动自己写的Shell,来实现开机自动启动Minecraft server。
以我想启动Minecraft为例
1. 编写启动脚本
为了方便以后开服,我们先在/root/mc下面创建一个startServer.sh文件。
vim startServer.sh
根据自己情况填写
我这里想开机启动screen然后用screen启动游戏
screen_name="MC" # 要建立的screen名字
screen -dmS $screen_name
cmd="cd /root/mc && java -jar fabric-server-launch.jar"; # 要执行的命令,要指明路径,不指明时默认是在 / 目录下
screen -x -S $screen_name -p 0 -X stuff "$cmd" # 输入命令
screen -x -S $screen_name -p 0 -X stuff '\n' # 回车执行
保存退出。
不过这种方式发送的命令不能太长,否则会导致脚本卡住。
如果需要发送一条很长的命令,或者连续发送许多条命令,最好单独写一个脚本,发送一个脚本命令给screen,让screen执行新的脚本。
2. 编辑 rc-local.service 文件
首先执行
sudo chmod 777 /lib/systemd/system/rc-local.service #赋予rc-local.service修改权限
sudo vim /lib/systemd/system/rc-local.service
在rc-local.service文件尾部添加以下内容:
[Install]
WantedBy=multi-user.target
Alias=rc-local.service
3. 编辑 rc.local 文件
sudo vim /etc/rc.local
在里面填写
#!/bin/sh
echo "看到这行字,说明添加自启动脚本成功。" > /usr/local/test.log
cd /root/mc/
chmod 777 startServer.sh
./startServer.sh &
exit 0
给rc.local文件加上权限。
sudo chmod +x /etc/rc.local
3. 创建软链接
在 /etc/systemd/system/目录下创建软链接。Ubuntu创建软链接类似于Windows下创建快捷方式。
# 创建方式:ln -s 原目录 映射目录
sudo ln -s /lib/systemd/system/rc-local.service /etc/systemd/system/
# 查看软链接
ls -il
参考
[Ubuntu 实现shell文件的开机运行(从原理到实现)](