kami memiliki skrip systemd sederhana untuk memulai server MineCraft dengan cara layanan. SO adalah CentOS 7. Berikut skripnya:
[Unit]
Description=Minecraft Server
After=syslog.target network.target
[Service]
Type=simple
WorkingDirectory=/root/Minecraft
ExecStart=/bin/java -Xmx1024M -Xms1024M -jar minecraft_server.jar nogui
Restart=on-failure
[Install]
WantedBy=multi-user.target
Memulai layanan berfungsi dengan baik tetapi ketika berhenti, layanan tetap dalam kondisi gagal. Lihat:
systemctl status minecraftd.service
minecraftd.service - Minecraft Server
Loaded: loaded (/usr/lib/systemd/system/minecraftd.service; disabled)
Active: active (running) since Mon 2015-06-01 16:00:12 UTC; 18s ago
Main PID: 20975 (java)
CGroup: /system.slice/minecraftd.service
└─20975 /bin/java -Xmx1024M -Xms1024M -jar minecraft_server.jar nogui
systemctl stop minecraftd.service
systemctl status minecraftd.service
minecraftd.service - Minecraft Server
Loaded: loaded (/usr/lib/systemd/system/minecraftd.service; disabled)
Active: failed (Result: exit-code) since Mon 2015-06-01 16:01:37 UTC; 3s ago
Process: 20975 ExecStart=/bin/java -Xmx1024M -Xms1024M -jar minecraft_server.jar nogui (code=exited, status=143)
Main PID: 20975 (code=exited, status=143)
Ada ide?
Terima kasih
Untuk melengkapi jawaban Michael, kode keluar 143 adalah normal di sini, itu adalah cara bahwa java VM menerima sinyal SIGTERM, kirim oleh systemd untuk menghentikan proses. Sinyal SIGTERM memiliki nilai numerik 15 (lihat
man signal
).Sekarang menurut spesifikasi Posix, "Status keluar dari perintah yang diakhiri karena menerima sinyal harus dilaporkan lebih besar dari 128". ( http://pubs.opengroup.org/onlinepubs/009695399/utilities/xcu_chap02.html#tag_02_08_02 )
Di sini Java VM menambahkan 128 + 15 dan Anda mendapatkan kode keluar dari 143.
Kode keluar non nol di sini masuk akal, karena ini memungkinkan untuk melihat bahwa program java Anda keluar karena sinyal eksternal, dan Anda mendapatkan kesempatan untuk mengetahui sinyal mana.
sumber