Điểm:2

Làm cách nào để tạo dịch vụ khởi động cho máy chủ Minecraft có tệp start.sh?

lá cờ eg

Tôi đã cài đặt một máy chủ FTB đã sửa đổi cho Máy chủ Ubuntu của mình, tạo một người dùng và nhóm có tên là "ftb" và đặt cho nó thư mục riêng /opt/ftb/ có chứa một thư mục với các tập tin máy chủ. Trong thư mục server có file start.sh để khởi động server. Làm cách nào để tạo tệp dịch vụ hệ thống để tôi có thể sử dụng các lệnh như trạng thái systemctl ftbacademy.service, systemctl bắt đầu ftbacademy.service, và systemctl dừng ftbacademy.service. Khi dừng máy chủ, tôi muốn nó lưu và sau đó đóng máy chủ. Tệp .service sẽ trông như thế nào? Tôi biết nó phải được đặt trong /etc/systemd/system/, nhưng tôi không biết cách ghi tệp khiến người dùng ftb mở thiết bị đầu cuối ảo của chính nó hoặc bất cứ thứ gì để có thể cứu thế giới và sau đó dừng máy chủ.

Phiên bản máy chủ Ubuntu 20.04.3

Trang web tải xuống tệp máy chủ FTB Academy 1.16 được sử dụng: https://feed-the-beast.com/modpacks/88/server/2077 Tôi đã chọn tùy chọn tải xuống Linux, sau đó chạy tệp cài đặt để tự động tải xuống các tệp máy chủ.

Tôi cũng đang sử dụng một phiên bản JDK khác để chạy tệp máy chủ nên tôi đã thay đổi tệp start.sh thành tệp này:

#!/bin/bash
nếu ! grep -q "eula=true" eula.txt; sau đó
    echo "Bạn có đồng ý với EULA Mojang có sẵn tại https://account.mojang.com/documents/minecraft_eula không?"
    đọc -N 1 -p "[y/n]" EULA
    nếu [ "$EULA" = "y" ]; sau đó
        tiếng vang "eula=true"> eula.txt
        tiếng vang
    fi
fi
/usr/lib/jvm/java-11-openjdk-amd64/bin/java -javaagent:log4jfix/Log4jPatcher-1.0.0.jar -XX:+UseG1GC -XX:+UnlockExperimentalVMOptions -Xmx5000M -Xms4000M -jar forge-1.16. 5-36.2.2.jar nogui
Nate T avatar
lá cờ it
máy chủ ftb đã mod nào? Nó đến từ trang web chính thức của feedthebeast hay ở đâu đó khác. Liệt kê điểm cuối và tôi sẽ cài đặt nó cục bộ và cho bạn biết. Cần phải xem tệp sh trước khi tôi cho bạn biết cách thêm nó. Nó có thể được gọi bằng `.bashrc`, nhưng tôi cần xem chính xác những gì nó làm trước khi đưa ra lời khuyên cài đặt. Bên cạnh đó, tôi muốn một bản sao của máy chủ. XD Btw, bạn cần thêm phiên bản Ubuntu của mình vào câu hỏi. Các phiên bản khác nhau chứa các môi trường khác nhau. Hầu hết các câu trả lời sẽ thay đổi ít nhất một chút tùy thuộc vào phiên bản. Đặc biệt là vì chúng tôi vừa thay đổi mgr win mặc định vào ngày 21.04
lordoftimelords avatar
lá cờ eg
@NateT Tôi tin rằng tôi đã thêm tất cả thông tin bạn yêu cầu. Tôi đã sử dụng trang FTB chính thức và đã thêm liên kết vào bài đăng.
lordoftimelords avatar
lá cờ eg
@NateT `cd /usr/lib/jvm/java-11-openjdk-amd64/bin && ls -a | grep java` xuất ra `java java javac javadoc javap`.Điều này sẽ trợ giúp như thế nào với việc tạo tệp .service? Tôi không gặp vấn đề gì khi chạy máy chủ, tôi chỉ muốn tạo một tệp .service để chạy nó khi khởi động, dừng máy chủ và kiểm tra trạng thái bằng người dùng ftb. Hãy tha thứ cho tôi nếu tôi hiểu sai những gì đang xảy ra. Tôi không quá quen thuộc với điều này. Tôi chủ yếu làm theo các hướng dẫn rất cụ thể và sao chép và dán nội dung.
Terrance avatar
lá cờ id
Điều này có trả lời câu hỏi của bạn không? [Làm cách nào để tôi chạy một lệnh khi khởi động bằng systemd?](https://askubuntu.com/questions/919054/how-do-i-run-a-single-command-at-startup-using-systemd)
Nate T avatar
lá cờ it
Ngoài ra, tôi thấy từ `log4j, điều này làm tôi hơi sợ. Tiếp theo là 'sửa chữa', nhưng tôi sẽ không đặt cược trang trại của mình vào đó. Nếu bạn định đặt nó vào máy chủ Docker hoặc apache2 có cổng, tôi sẽ không làm. Xem [tại đây.](https://www.youtube.com/watch?v=qjA_vc9Ua5A&t=203s) Đây thực sự là video quay cảnh máy chủ Minecraft trên Ubuntu được tiêm tải trọng chứa cmds để chạy trên hệ thống nạn nhân. Tôi khuyên bạn nên xem tin tức và cố gắng đánh giá mức độ tin cậy của cộng đồng nguồn mở đối với bản vá. Rõ ràng, nhiều lỗ hổng đã xuất hiện kể từ lần cuối tôi kiểm tra.
Nate T avatar
lá cờ it
OK, NẾU BẠN KHÔNG CÓ KẾ HOẠCH CHUYỂN CỔNG ĐẾN INTERNET, hãy chạy cmd này trong bash shell. `MC_CMD='alias start_srvr="/usr/lib/jvm/java-11-openjdk-amd64/bin/java -javaagent:log4jfix/Log4jPatcher-1.0.0.jar -XX:+UseG1GC -XX:+UnlockExperimentalVMOptions -Xmx5000M -Xms4000M -jar forge-1.16.5-36.2.2.jar nogui"' && echo "${MC_CMD}" >> ~/.bash_aliases || tiếng vang "${MC_CMD}" >> ~/.bashrc`
lordoftimelords avatar
lá cờ eg
@NateT Nếu tôi định chuyển tiếp thì sao? Tôi dự định sử dụng máy chủ xa nhà với bạn bè. Tôi sử dụng tính năng thực thi danh sách trắng và chỉ chuyển tiếp cổng được yêu cầu. Người dùng ftb cũng không có quyền sudo. Ngoài ra, làm cách nào để dừng máy chủ nếu tôi phải làm vậy? Tôi hoàn toàn không hiểu lệnh trên làm gì. Tôi nghĩ rằng tôi hiểu rằng nó thêm một bí danh để rút ngắn lệnh thành start_srvr, nhưng `&& echo "${MC_CMD}" >> ~/.bash_aliases || tiếng vang "${MC_CMD}" >> ~/.bashrc` làm gì?
Nate T avatar
lá cờ it
`sudo chmod 774 ` sẽ cấp cho bạn quyền cần thiết, nhưng hãy chạy `ls -l ` và ghi lại chuỗi quyền cũ trước, trong trường hợp bạn cần thay đổi lại.Ngoài ra, tại sao bạn lại sử dụng systemd để chạy tập lệnh bắt đầu? Bạn có muốn chạy như một daemon? Điều đó thực sự không có ý nghĩa gì, trừ khi bạn đang sử dụng nó như một máy chủ web chuyên dụng, trong trường hợp đó, đừng bận tâm...
Nate T avatar
lá cờ it
Tôi sẽ đợi vài tuần... **Xem video** ^^^. Nó có một lỗ hổng LỚN trong đó. Đủ lớn để nó rất có thể là chiếc đinh cuối cùng trong quan tài của Java. Và điều đó đến từ một nhà phát triển Java chuyên nghiệp. Tôi không nói điều đó một cách nhẹ nhàng.
lordoftimelords avatar
lá cờ eg
@NateT Tôi đã thêm nhận xét vào câu trả lời của bạn bên dưới cùng với liên kết đến hướng dẫn mà tôi đã làm theo cho các máy chủ vanilla. Tôi thực sự không biết những ưu điểm và nhược điểm của systemd và tôi không biết daemon là gì. Tôi chỉ thích chức năng có thể khởi động máy chủ, kiểm tra trạng thái và dừng máy chủ bằng các lệnh và không cần phải giữ một cửa sổ đang hoạt động đưa vào máy chủ để thực hiện những việc đó. Ngoài ra, tôi có thể lấy liên kết đến video đó không? Và điều đó có nghĩa là tôi nên đóng các máy chủ khác của mình? Tôi sử dụng spigot cho chúng và sử dụng TCPShield để ngăn chặn ddos ​​và những thứ khác nếu tôi không nhầm.
Nate T avatar
lá cờ it
Hãy để chúng tôi [tiếp tục cuộc thảo luận này trong cuộc trò chuyện](https://chat.stackexchange.com/rooms/132813/discussion-between-nate-t-and-lordoftimelords).
Terrance avatar
lá cờ id
Sau đó, bạn có thể muốn xem https://askubuntu.com/questions/676007/how-do-i-make-my-systemd-service-run-via-specific-user-and-start-on-boot khi thêm `Người dùng=` và `Nhóm=` để chạy với tư cách người dùng khác trong systemd.
Điểm:2
lá cờ eg

Tôi đã tạo một tệp có tên [email protected] tại địa điểm /etc/systemd/system/. Các tập tin chứa những điều sau đây:

[Đơn vị]
Mô tả=Máy chủ FTB: %i
Sau=mạng.mục tiêu

[Dịch vụ]
WorkingDirectory=/opt/ftb/%i

Người dùng=ftb
Nhóm=ftb

Khởi động lại = luôn luôn

ExecStart=/usr/bin/screen -DmS mc-%i bash start.sh

ExecStop=/usr/bin/screen -p 0 -S mc-%i -X eval 'stuff "nói MÁY CHỦ TẮT SAU 15 GIÂY..."\015'
ExecStop=/bin/ngủ 5
ExecStop=/usr/bin/screen -p 0 -S mc-%i -X eval 'stuff "nói MÁY CHỦ TẮT SAU 10 GIÂY..."\015'
ExecStop=/bin/ngủ 5
ExecStop=/usr/bin/screen -p 0 -S mc-%i -X eval 'stuff "nói MÁY CHỦ TẮT SAU 5 GIÂY..."\015'
ExecStop=/bin/ngủ 5
ExecStop=/usr/bin/screen -p 0 -S mc-%i -X eval 'stuff "save-all"\015'
ExecStop=/usr/bin/screen -p 0 -S mc-%i -X eval 'stuff "stop"\015'

[Cài đặt]
WantedBy=multi-user.target

Sau đó tôi đã sử dụng kích hoạt systemctl ftb@academysystemctl start ftb@academy để kích hoạt và khởi động máy chủ. Tôi cũng nhận ra rằng khi tôi tạo người dùng ftb lần đầu và cấp cho nó quyền sở hữu thư mục mà tôi đã không cấp cho nó quyền đối với các thư mục con, vì vậy nó đã bị từ chối quyền khởi động máy chủ.

Điểm:0
lá cờ it

Hãy chú ý đến url cho EULA trong tập lệnh. Tất cả những gì nó làm là yêu cầu bạn đã đọc và nếu bạn chấp nhận, các điều khoản của nó, nhưng chỉ khi bạn chưa được hỏi và trả lời là có.

Vì vậy, sau lần đầu tiên nó được chạy, Nó sẽ chỉ thực thi các dòng trên cùng và dưới cùng.

Cách dễ nhất để thiết lập nó (về lâu dài sẽ tiết kiệm thời gian) là thêm bí danh cho lệnh ở dòng cuối cùng, lệnh này thực sự định cấu hình và khởi động tệp máy chủ. Điều này có thể được thực hiện với:

MC_CMD='alias start_srvr="/usr/lib/jvm/java-11-openjdk-amd64/bin/java -javaagent:log4jfix/Log4jPatcher-1.0.0.jar -XX:+UseG1GC -XX:+UnlockExperimentalVMOptions -Xmx5000M - Xms4000M -jar forge-1.16.5-36.2.2.jar nogui"' && echo "${MC_CMD}" >> ~/.bash_aliases || tiếng vang "${MC_CMD}" >> ~/.bashrc

Chạy lệnh tôi đã thêm ở trên chỉ là một tiện ích nhỏ, vì vậy bạn không cần phải lo lắng về việc thêm tập lệnh vào CON ĐƯỜNG hoặc nếu không thì phải tính toán đường dẫn tương đối hoặc nhập đường dẫn đầy đủ mỗi khi bạn muốn khởi động máy chủ của mình.

Nếu bạn quyết định xóa máy chủ, bạn có thể xóa "lệnh" bằng cách chỉnh sửa ~/.bash_aliases và xóa dòng duy nhất chứa nó.

lordoftimelords avatar
lá cờ eg
Làm cách nào để tôi dừng máy chủ bằng phương pháp này? Tôi có thể không hoàn toàn hiểu chuyện gì đang xảy ra, nhưng tôi tin rằng điều này chỉ khởi động máy chủ khi khởi động chứ không có gì khác thực sự chính xác? Đối với các máy chủ khác của tôi, tôi đã làm theo hướng dẫn này https://linuxconfig.org/ubuntu-20-04-minecraft-server-setup và thích khả năng dừng máy chủ và để nó tự động phát thông báo máy chủ cho biết máy chủ đang tắt . Tôi biết nó kén chọn, nhưng tôi thích một cái gì đó như thế. Có thể không? Tôi không có kiến ​​thức để tạo lại điều này cho máy chủ ftb. Tôi đã thử và bối rối.
Nate T avatar
lá cờ it
Làm thế nào để nó nói để làm như vậy trong readme? Tôi có thể viết một chức năng để đăng nhập nó. Trên thực tế, với log4j, tôi có thể giết nó từ đây! XD Không, nhưng nghiêm túc mà nói, tệp được đề cập ở cuối bí danh là điểm vào. Cần có lệnh quản trị viên "trong trò chơi" tích hợp để thực hiện cả hai điều đó (đăng nhập và dừng máy chủ)
lordoftimelords avatar
lá cờ eg
Thông thường, nếu bạn chạy lệnh start.sh với tư cách là người dùng trong thiết bị đầu cuối trong khi sshed, thì nó sẽ chủ động chạy máy chủ trong thiết bị đầu cuối.Sau đó, bạn có thể gõ lệnh vào máy chủ (gần giống như / lệnh ingame nếu bạn có quyền sở hữu hoặc quản trị viên) như dừng. Vì vậy, nó hiển thị tải máy chủ, bạn có thể gõ dừng để lưu và dừng, sử dụng các lệnh như danh sách trắng, danh sách đen, ipban, v.v. Tôi không cần các lệnh khác vì tôi có thể chỉnh sửa các tệp chứa người dùng trong danh sách trắng, nhưng dừng lại sẽ rất tuyệt nếu tôi không phải vào Minecraft, tham gia máy chủ, sau đó ra lệnh dừng nó. Phải mất thời gian để tải.
Nate T avatar
lá cờ it
Tôi hiểu rồi. Tôi sẽ viết một cái gì đó. cho tôi một giây.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.