framework/script/server.sh

81 lines
2.1 KiB
Bash
Raw Normal View History

2020-04-16 22:08:07 +03:00
#!/bin/sh
2020-08-02 16:39:00 +03:00
# The alive checker and Minecraft server is started at the same time
2020-04-16 22:08:07 +03:00
PATH="$HOME/framework/vendor/java/bin/:$PATH"
# Make sure we're in the server folder, located in the home directory
cd ~/server/
while true; do
2022-04-09 14:37:18 +03:00
# Check if the server is stuck in a crash loop, and reset worlds if this is the case
# The alive checker resets server_stops.log if the server runs long enough
stop_log_file=server_stops.log
if [ -f "$stop_log_file" ] && [ "$(wc -l < $stop_log_file)" -gt 3 ]; then
rm -rf worlds/ plugins/FastAsyncWorldEdit/clipboard/ plugins/FastAsyncWorldEdit/history/
rm "$stop_log_file"
fi
# Make certain files and folders read-only
2020-12-12 20:35:51 +02:00
mkdir debug/ dumps/ plugins/update/
2025-01-27 17:12:30 +00:00
chmod -R 500 debug/ dumps/ plugins/bStats/ plugins/update/
2020-12-12 20:35:51 +02:00
chmod 500 plugins/
chmod 400 bukkit.yml
chmod 400 commands.yml
chmod 400 eula.txt
chmod 400 paper.yml
chmod 400 permissions.yml
chmod 400 server-icon.png
chmod 400 server.properties
chmod 400 spigot.yml
chmod 400 wepif.yml
# Start alive checker
dtach -n alivecheck ~/framework/script/alivecheck.sh
# Start Minecraft server
2020-08-02 15:17:00 +03:00
java \
2025-01-24 21:38:05 -03:00
-Xms1700M -Xmx1700M \
\
-Dusing.aikars.flags=https://mcflags.emc.gs -Daikars.new.flags=true \
2022-05-21 19:37:07 +03:00
-XX:+UseG1GC \
-XX:+ParallelRefProcEnabled \
-XX:MaxGCPauseMillis=200 \
-XX:+UnlockExperimentalVMOptions \
-XX:+DisableExplicitGC \
-XX:+AlwaysPreTouch \
-XX:G1HeapWastePercent=5 \
-XX:G1MixedGCCountTarget=4 \
-XX:G1MixedGCLiveThresholdPercent=90 \
-XX:G1RSetUpdatingPauseTimePercent=5 \
-XX:SurvivorRatio=32 \
-XX:+PerfDisableSharedMem \
-XX:MaxTenuringThreshold=1 \
-XX:G1NewSizePercent=30 \
-XX:G1MaxNewSizePercent=40 \
-XX:G1HeapRegionSize=8M \
-XX:G1ReservePercent=20 \
-XX:InitiatingHeapOccupancyPercent=15 \
2020-08-02 15:17:00 +03:00
-Xss8M \
2020-08-02 20:14:02 +03:00
-XX:MaxDirectMemorySize=512M \
\
2022-05-21 19:37:07 +03:00
-XX:-UsePerfData \
-Dpaper.playerconnection.keepalive=60 \
2020-08-02 15:17:00 +03:00
-DIReallyKnowWhatIAmDoingISwear \
\
2020-08-02 15:17:00 +03:00
-jar server.jar nogui
# Stop alive checker (will be started again on the next run)
pkill -9 alivecheck.sh
2022-04-09 14:37:18 +03:00
echo $(date) >> "$stop_log_file"
# Ensure we don't abuse the CPU in case of failure
2020-04-16 22:08:07 +03:00
sleep 1
done