I servizi restano in stato fallito dopo essere stati arrestati con systemctl

abbiamo un semplice script systemd per avviare un server MineCraft in un modo di servizio. L'SO è CentOS 7. Qui lo script:

[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 

L'avvio del servizio funziona bene ma quando si arresta, il servizio rimane in uno stato di errore. Vedere:

 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) 

Qualche idea?

Grazie

  • Configurazione del servizio Systemd per l'esecuzione con accesso root
  • Creazione di istanze Apache multiple su CentOS 7 SystemD
  • Le sessioni SSH appaiono all'arresto / riavvio
  • file di servizio per l'applicazione di golang
  • Utilizzo di systemd per le variables di ambiente Apache o SetEnv?
  • Automount ATA / SCSI unità con systemd
  • proc-sys-fs-binfmt_misc.automount non è riuscito
  • È ansible effettuare il multidistribuzione del sistema con una scheda grafica / due teste?
  • One Solution collect form web for “I servizi restano in stato fallito dopo essere stati arrestati con systemctl”

    Il codice di output 143 significa che il programma ha ricevuto un segnale SIGTERM per istruirlo per uscire, ma non ha gestito correttamente il segnale. Questo è quasi sempre dovuto agli errori di programmazione ed è piuttosto comune con le applicazioni Java di tutti i tipi.

    Devi potere sopprimere questo aggiungendo il codice di output nel file unit come uno stato di output "success":

     [Service] SuccessExitStatus=143 
    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.