V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Useful Links
Minecraft Wiki
合成配方
starsriver
V2EX  ›  Minecraft

mc 服务端怎么样才能在 Linux 上实现随服务器自启?的?

  •  
  •   starsriver · 2019-08-18 23:21:09 +08:00 via Android · 18494 次点击
    这是一个创建于 1942 天前的主题,其中的信息可能已经有所发展或是发生改变。
    在 linux 中启动 mc 服务器的时候需要 cd 到指定目录,然后运行 jar。

    比如说 cd /var/mc/server1,然后执行 java -jar ......就会在 server1 这个目录里面生成服务端数据,cd 到 server2 再启动 jar 又会在 server2 文件夹里面生成数据和文件。

    启动脚本是一个 shell 文件,如果只在里面写 java -jar.....就必须每次都 cd 到目录再运行 sh 文件来启动服务,在 sh 中用 cd 又会出现目录找不到的问题(还没有验证开机自动运行 sh 或 crontab 运行会发生什么)

    请问有经验的 v 友是怎么做到开机自启以及在指定目录运行服务端的(不要谈面板)
    21 条回复    2019-08-20 12:24:19 +08:00
    misaka19000
        1
    misaka19000  
       2019-08-18 23:23:22 +08:00
    没懂什么意思

    java -jar 使用绝对路径不行吗,或者指定文件路径不也可以?标准输出的话重定向一下就可以了
    jybox
        3
    jybox  
       2019-08-18 23:27:57 +08:00
    看你用的是 systemd、init 还是 upstart,查对应文档。

    或者 crontab 里面 @reboot (详见文档)
    starsriver
        4
    starsriver  
    OP
       2019-08-18 23:45:00 +08:00 via Android
    @misaka19000 标题没表达清楚😅。

    打个比方:我的地图文件,插件都在 a 目录里面放着,这时候 cd 到 a 目录再启动 jar 就是正常的服务,但是如果我在 b 目录里面运行 jar,就会在 b 目录里面生成一套新的数据,相当于启动了一个全新的服务端。

    我想让 linux 开机的时候自动启动服务端,这就需要脚本实现了。和 win 的 bat 不一样,win 执行 bat 的时候默认路径就是 bat 所在目录,启动的服务也是 bat 目录下的数据文件,但是 shell 脚本执行的时候会有意思,如果我在 xshell 窗口运行 shell 脚本,就不能通过脚本访问到 a 目录,这时候运行 jar 就会导致在 b 目录生成新文件。虽然 mc 服务是启动了,但是地图和玩家数据是位于 a 文件夹的。
    misaka19000
        5
    misaka19000  
       2019-08-18 23:53:21 +08:00
    简单,在 shell 中找到目标文件的路径,之后进入这个目录就行
    starsriver
        6
    starsriver  
    OP
       2019-08-18 23:55:17 +08:00 via Android
    @misaka19000

    #!/bin!sh
    cd /.....

    这个 cd 没有用的。。
    gerardyang
        7
    gerardyang  
       2019-08-18 23:58:42 +08:00 via Android
    @starsriver set 一个环境变量啊
    KasuganoSoras
        8
    KasuganoSoras  
       2019-08-19 00:03:01 +08:00   ❤️ 2
    # 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

    完事了
    oneisall8955
        9
    oneisall8955  
       2019-08-19 00:05:05 +08:00 via Android
    开机你自己怎么敲命令,就写一个脚本到 systemd service 服务上 enabled 它或者编辑 /etc/ rc.local 执行 shell 脚本吧,注意环境变量一致和尽量使用绝地路径
    ech0x
        10
    ech0x  
       2019-08-19 00:07:37 +08:00 via iPhone
    systemd
    misaka19000
        11
    misaka19000  
       2019-08-19 00:21:02 +08:00
    cd $(dirname ${0})

    搞定
    starsriver
        12
    starsriver  
    OP
       2019-08-19 03:24:03 +08:00 via Android
    @misaka19000 我傻了想死一会儿。

    忘了 dos 的编码和 unix 不一样。。
    alphatoad
        13
    alphatoad  
       2019-08-19 03:36:25 +08:00 via iPhone
    systemd
    des
        14
    des  
       2019-08-19 09:00:29 +08:00 via Android
    WorkingDirectory 正解
    Z1on
        15
    Z1on  
       2019-08-19 10:18:34 +08:00 via Android
    试试 docker ?
    no1xsyzy
        16
    no1xsyzy  
       2019-08-19 10:50:43 +08:00
    #12 啊哈,我猜是 / 和 \ 搞错了
    verdad
        17
    verdad  
       2019-08-19 13:30:45 +08:00 via iPad
    请尊重历史,用 GNU/Linux。“ Linux 系统”是错误的。
    @no1xsyzy @0x4F5DA2 @explore2233 @nguoidiqua @DIYff
    no1xsyzy
        18
    no1xsyzy  
       2019-08-19 15:05:58 +08:00
    @verdad 那我明确说了,你修正的方向根本不对。
    应该更正 Linux 为 *nix 或者 Unix-like 或者 POSIX
    现在讨论的不是某个特定项目或者特定完整系统,而是在这套规范上的应用。
    你根本不尊重 BSD、alpine、musl、busybox、herd、OS/2、HP-UX。
    verdad
        19
    verdad  
       2019-08-20 10:06:15 +08:00 via iPad
    照你的意思,我说句“老师好”就不尊重父母了?
    @no1xsyzy @0x4F5DA2 @explore2233 @nguoidiqua @DIYff
    no1xsyzy
        20
    no1xsyzy  
       2019-08-20 12:24:06 +08:00
    @verdad 打个比方,A 对其伯伯喊叔叔好,你非要纠正成老师好?你这算尊重吗?
    另外,你有必要把所有人都带上吗?
    no1xsyzy
        21
    no1xsyzy  
       2019-08-20 12:24:19 +08:00
    @verdad 已 Red
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5437 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 02:46 · PVG 10:46 · LAX 18:46 · JFK 21:46
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.