Ich versuche, ein Shell-Skript von Systemd auszuführen. Das Skript wird problemlos über die Befehlszeile ausgeführt.
Das Skript (runServer.sh) startet einen Java-Prozess und sieht folgendermaßen aus:
#!/bin/bash
java -jar -Dresources=/home/pruss/dev/ServerDeploy5-4.1/Server/resources/MyServer.jar "0" "Test"
In /usr/lib/systemd/system
(oder /lib/systemd/system/
auf anderen Betriebssystemen) habe ich eine Servicedatei erstellt (myService.service):
[Unit]
Description=My Servers service
[Service]
ExecStart=/home/pruss/dev/ServerDeploy5-4.1/Server/runServer.sh
User=root
Type=oneshot
[Install]
WantedBy=multi-user.target
Das Ergebnis
Job for myService.service failed. See "systemctl status myService.service" and "journalctl -xn" for details.
Ich versuche:
systemctl status myService.service
Loaded: loaded (/usr/lib/systemd/system/myService.service; disabled)
Active: failed (Result: exit-code) since Thu 2015-07-23 12:27:38 BST; 26s ago
Main PID: 28413 (code=exited, status=203/EXEC)
Antworten:
Ich bin mir nicht sicher, wer das getan hat.
Ich habe die Lösung gefunden und sie veröffentlicht, um anderen die Mühe zu ersparen.
Was Sie oben sehen, funktioniert. Der endgültige Service ist jedoch:
Wichtig ist, dass ich in meinem Shell-Skript den vollständigen Pfad der JAR-Datei eingeben musste. java -jar /home/myprog.jar etc
ie ./myJar.jar hat nicht funktioniert. Ich hoffe, das hilft.
quelle
Möglicherweise benötigen Sie das Shell-Skript nicht. Sie können den Vorgang über die Datei myService.service starten, sofern Sie den vollständigen Pfad sowohl zur Java-Binärdatei als auch zur JAR-Datei verwenden. Es sollte ungefähr so aussehen
Funktioniert unter CentOS 7.2.
quelle
Werfen Sie einen Blick auf meine Antwort zum Stackoverflow. Dort erfahren Sie, wie Sie einen
systemd
Service für eine Java-Anwendung erstellen :/programming//a/22121547/272180
quelle
Dies ist meine systemd-Vorlage für einen Java-Prozess
quelle
Ich hatte das gleiche Problem (Code = beendet, Status = 203 / EXEC).
Vergessen Sie nicht, Ihrem Benutzer Skriptausführungsberechtigungen zu erteilen.
Möglicherweise möchten Sie 777 in etwas restriktiveres ändern.
oder
Dann:
quelle
Möglicherweise müssen Sie ein WorkingDirectory = hinzufügen, damit es weiß, wo die Dinge ausgeführt werden sollen.
quelle