
1 misaka19000 2019 年 8 月 18 日 没懂什么意思 java -jar 使用绝对路径不行吗,或者指定文件路径不也可以?标准输出的话重定向一下就可以了 |
2 charlie21 2019 年 8 月 18 日 |
4 starsriver OP @misaka19000 标题没表达清楚。 打个比方:我的地图文件,插件都在 a 目录里面放着,这时候 cd 到 a 目录再启动 jar 就是正常的服务,但是如果我在 b 目录里面运行 jar,就会在 b 目录里面生成一套新的数据,相当于启动了一个全新的服务端。 我想让 linux 开机的时候自动启动服务端,这就需要脚本实现了。和 win 的 bat 不一样,win 执行 bat 的时候默认路径就是 bat 所在目录,启动的服务也是 bat 目录下的数据文件,但是 shell 脚本执行的时候会有意思,如果我在 xshell 窗口运行 shell 脚本,就不能通过脚本访问到 a 目录,这时候运行 jar 就会导致在 b 目录生成新文件。虽然 mc 服务是启动了,但是地图和玩家数据是位于 a 文件夹的。 |
5 misaka19000 2019 年 8 月 18 日 简单,在 shell 中找到目标文件的路径,之后进入这个目录就行 |
6 starsriver OP |
7 gerardyang 2019 年 8 月 18 日 via Android @starsriver set 一个环境变量啊 |
8 KasuganoSoras 2019 年 8 月 19 日 # vim /etc/systemd/system/minecraft.service [Unit] Description=Minecraft Server Wants=network-online.target After=network-online.target [Service] User=root WorkingDirectory=/<服务端目录>/ LimitNOFILE=4096 PIDFile=/var/run/minecraft/server.pid ExecStart=/usr/bin/java -Xmx 最大内存 M -Xms 最小内存 M -jar <jar 名字> Restart=on-failure StartLimitInterval=600 [Install] WantedBy=multi-user.target # systemctl daemon-reload # systemctl enable minecraft --now 完事了 |
9 itechify PRO 开机你自己怎么敲命令,就写一个脚本到 systemd service 服务上 enabled 它或者编辑 /etc/ rc.local 执行 shell 脚本吧,注意环境变量一致和尽量使用绝地路径 |
10 ech0x 2019 年 8 月 19 日 via iPhone systemd |
11 misaka19000 2019 年 8 月 19 日 cd $(dirname ${0}) 搞定 |
12 starsriver OP |
13 alphatoad 2019 年 8 月 19 日 via iPhone systemd |
14 des 2019 年 8 月 19 日 via Android WorkingDirectory 正解 |
15 Z1on 2019 年 8 月 19 日 via Android 试试 docker ? |
16 no1xsyzy 2019 年 8 月 19 日 #12 啊哈,我猜是 / 和 \ 搞错了 |
17 verdad 2019 年 8 月 19 日 via iPad |
18 no1xsyzy 2019 年 8 月 19 日 @verdad 那我明确说了,你修正的方向根本不对。 应该更正 Linux 为 *nix 或者 Unix-like 或者 POSIX 现在讨论的不是某个特定项目或者特定完整系统,而是在这套规范上的应用。 你根本不尊重 BSD、alpine、musl、busybox、herd、OS/2、HP-UX。 |
19 verdad 2019 年 8 月 20 日 via iPad |