V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
Useful Links
Minecraft Wiki
合成配方
starsriver
V2EX  ›  Minecraft

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

  •  
  •   starsriver · Aug 18, 2019 via Android · 21127 views
    This topic created in 2450 days ago, the information mentioned may be changed or developed.
    在 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 replies    2019-08-20 12:24:19 +08:00
    misaka19000
        1
    misaka19000  
       Aug 18, 2019
    没懂什么意思

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

    或者 crontab 里面 @reboot (详见文档)
    starsriver
        4
    starsriver  
    OP
       Aug 18, 2019 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  
       Aug 18, 2019
    简单,在 shell 中找到目标文件的路径,之后进入这个目录就行
    starsriver
        6
    starsriver  
    OP
       Aug 18, 2019 via Android
    @misaka19000

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

    这个 cd 没有用的。。
    gerardyang
        7
    gerardyang  
       Aug 18, 2019 via Android
    @starsriver set 一个环境变量啊
    KasuganoSoras
        8
    KasuganoSoras  
       Aug 19, 2019   ❤️ 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

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

    搞定
    starsriver
        12
    starsriver  
    OP
       Aug 19, 2019 via Android
    @misaka19000 我傻了想死一会儿。

    忘了 dos 的编码和 unix 不一样。。
    alphatoad
        13
    alphatoad  
       Aug 19, 2019 via iPhone
    systemd
    des
        14
    des  
       Aug 19, 2019 via Android
    WorkingDirectory 正解
    Z1on
        15
    Z1on  
       Aug 19, 2019 via Android
    试试 docker ?
    no1xsyzy
        16
    no1xsyzy  
       Aug 19, 2019
    #12 啊哈,我猜是 / 和 \ 搞错了
    verdad
        17
    verdad  
       Aug 19, 2019 via iPad
    请尊重历史,用 GNU/Linux。“ Linux 系统”是错误的。
    @no1xsyzy @0x4F5DA2 @explore2233 @nguoidiqua @DIYff
    no1xsyzy
        18
    no1xsyzy  
       Aug 19, 2019
    @verdad 那我明确说了,你修正的方向根本不对。
    应该更正 Linux 为 *nix 或者 Unix-like 或者 POSIX
    现在讨论的不是某个特定项目或者特定完整系统,而是在这套规范上的应用。
    你根本不尊重 BSD、alpine、musl、busybox、herd、OS/2、HP-UX。
    verdad
        19
    verdad  
       Aug 20, 2019 via iPad
    照你的意思,我说句“老师好”就不尊重父母了?
    @no1xsyzy @0x4F5DA2 @explore2233 @nguoidiqua @DIYff
    no1xsyzy
        20
    no1xsyzy  
       Aug 20, 2019
    @verdad 打个比方,A 对其伯伯喊叔叔好,你非要纠正成老师好?你这算尊重吗?
    另外,你有必要把所有人都带上吗?
    no1xsyzy
        21
    no1xsyzy  
       Aug 20, 2019
    @verdad 已 Red
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2346 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 53ms · UTC 10:54 · PVG 18:54 · LAX 03:54 · JFK 06:54
    ♥ Do have faith in what you're doing.