Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
exit code 143
View unanswered posts
View posts from last 24 hours
View posts from last 7 days

 
Reply to topic    Gentoo Forums Forum Index Deutsches Forum (German)
View previous topic :: View next topic  
Author Message
schmidicom
Veteran
Veteran


Joined: 09 Mar 2006
Posts: 1577
Location: Schweiz

PostPosted: Wed Mar 19, 2014 3:35 pm    Post subject: exit code 143 Reply with quote

Beim beenden eines Hintergrunddienst taucht im Log eine Meldung auf bei der ich mir jetzt nicht so ganz sicher bin was ich davon halten soll und hoffentlich kann einer von euch Licht in die Sache bringen.

Über folgendes service File (welches ich selbst geschrieben habe) wird ein Java Programm erfolgreich gestartet:
Code:
[Unit]
Description=UniFi-Controller
After=network.target

[Service]
Type=simple
ExecStart=/usr/bin/java -jar /opt/UniFi/lib/ace.jar start
ExecStop=/usr/bin/java -jar /opt/UniFi/lib/ace.jar stop

[Install]
WantedBy=multi-user.target

Hier der Aufruf auf der Konsole mit Statusanzeige:
Code:
pc177am UniFi # systemctl start unifi
pc177am UniFi # systemctl status unifi
unifi.service - UniFi-Controller
   Loaded: loaded (/etc/systemd/system/unifi.service; disabled)
   Active: active (running) since Mi 2014-03-19 16:02:21 CET; 11min ago
 Main PID: 967 (java)
   CGroup: /system.slice/unifi.service
           ├─ 967 /usr/lib/jvm//icedtea-7/bin/java -jar /opt/UniFi/lib/ace.jar start
           └─1003 bin/mongod --dbpath /opt/UniFi/data/db --port 27117 --logappend --logpath logs/mongod.log --nohttpinterface --bind_ip 127.0.0.1

Mär 19 16:02:21 pc177am systemd[1]: Started UniFi-Controller.

Aber wenn das ganze dann wieder beendet werden soll kommt dass dabei raus:
Code:
pc177am UniFi # systemctl stop unifi
pc177am UniFi # systemctl status unifi
unifi.service - UniFi-Controller
   Loaded: loaded (/etc/systemd/system/unifi.service; disabled)
   Active: failed (Result: exit-code) since Mi 2014-03-19 16:14:30 CET; 1s ago
  Process: 1106 ExecStop=/usr/bin/java -jar /opt/UniFi/lib/ace.jar stop (code=exited, status=0/SUCCESS)
  Process: 967 ExecStart=/usr/bin/java -jar /opt/UniFi/lib/ace.jar start (code=exited, status=143)
 Main PID: 967 (code=exited, status=143)

Mär 19 16:02:21 pc177am systemd[1]: Started UniFi-Controller.
Mär 19 16:14:29 pc177am systemd[1]: Stopping UniFi-Controller...
Mär 19 16:14:30 pc177am systemd[1]: unifi.service: main process exited, code=exited, status=143/n/a
Mär 19 16:14:30 pc177am systemd[1]: Stopped UniFi-Controller.
Mär 19 16:14:30 pc177am systemd[1]: Unit unifi.service entered failed state.

Der Prozess wird zwar beendet aber was mich etwas irritiert sind die Ausgaben "failed" und "(code=exited, status=143)", welche auf der Konsole auch mit roter Schrift hervorgehoben werden.

Kann mir einer sagen ob ich mir deswegen sorgen machen muss?
_________________
GPG: 0x3FC78AEE51E5FB95
Back to top
View user's profile Send private message
Christian99
Veteran
Veteran


Joined: 28 May 2009
Posts: 1178

PostPosted: Wed Mar 19, 2014 4:32 pm    Post subject: Reply with quote

Das "failed" ist schon eine interpretation des exitcodes. per konvention heißt ein exit code 0 das alles ok ist !=0 heißt, das etwas "unnormal" ist. was "unnormal" ist hängt aber von deinem programm ab. da müsstest du dann mal in der dokumentation deines programmes nachforschen, was dieser exit-code genau bedeutet.
Back to top
View user's profile Send private message
schmidicom
Veteran
Veteran


Joined: 09 Mar 2006
Posts: 1577
Location: Schweiz

PostPosted: Wed Mar 19, 2014 7:07 pm    Post subject: Reply with quote

Die Doku von dieser Java-App gibt leider nicht wirklich viel her, genau genommen ist es nicht einmal eine Doku sondern eher eine Kurzanleitung. Und die sagt einem lediglich wie das Programm gestartet/beendet wird und in welcher Datei die Einstellungen gespeichert sind.

Eine etwas längere Suche ergab das hier: https://community.oracle.com/message/6377073#6377073
Aber wenn das Programm den Rückgabewert selbst bestimmt, kann dieser wohl wirklich alles mögliche bedeuten.
_________________
GPG: 0x3FC78AEE51E5FB95
Back to top
View user's profile Send private message
ChrisJumper
Advocate
Advocate


Joined: 12 Mar 2005
Posts: 2227
Location: Germany

PostPosted: Wed Mar 19, 2014 10:05 pm    Post subject: Reply with quote

schmidicom,

bestimmt hast du archlinux - systemd - Writing custom .service file schon zumindest überflogen.

Hieraus geht ja folgendes hervor:

Quote:
Active: failed (Result: exit-code) since Mi 2014-03-19 16:14:30 CET; 1s ago
Process: 1106 ExecStop=/usr/bin/java -jar /opt/UniFi/lib/ace.jar stop (code=exited, status=0/SUCCESS)
Process: 967 ExecStart=/usr/bin/java -jar /opt/UniFi/lib/ace.jar start (code=exited, status=143)
Main PID: 967 (code=exited, status=143)


Systemd hat mit einem zweiten Kommando das erste herunter gefahren. Daher "stürzt" der Prozess mit dem du dein Programm gestartet hast ab.

Aus deinem Community Oracle Link hebe ich mal folgendes hervor:

843810 wrote:
Finally I found my issue. Actually there was an external process which kills this java sub-process and all I can see was 143 exitcode. The -Xrs switch didn`t helped at all.


843810 wrote:
In my case there was an Anthill agent process which is running Ant.


Ich finde das passt ganz gut. Am besten du schaust mal wie das Programm verfährt, ob es selber seine Subroutinen startet und verwaltet. Du kannst es ja auch ein wenig Observieren beim Start in einer Konsole. Forkt es, legt es eine PID-File an. Gibt es Konfigurationen dafür und so weiter. Mit einer PID könntest du das zumindest auch bei Systemd anders lösen. Finden sich weitere Hinweise in der gestarteten jar-Datei oder ein anderer Befehl zum beenden des Prozesses?

Denke bei deinem Script fehlt noch was oder das ganze ein wenig anpassen. Für Systemd sind die beiden Befehle zum starten und zum Stoppen aber offensichtlich zwei verschiedene Befehle, mit unterschiedlichen Prozessen.

Probiere doch mal Typ=forking vielleicht klappt es auch ohne eine explizite PID. Eventuell verfährt Systemd dann anders mit der erzeugten PID beim ausführen des ExecStop Befehles.

Mir fehlt bei den ganzen uinit Files immer das Ampersend, welches in der Shell den Befehl ja in den Hintergrund legt. Wobei ich auch denke das Systemd dies immer von alleine macht.
Back to top
View user's profile Send private message
schmidicom
Veteran
Veteran


Joined: 09 Mar 2006
Posts: 1577
Location: Schweiz

PostPosted: Thu Mar 20, 2014 7:04 am    Post subject: Reply with quote

ChrisJumper wrote:
Systemd hat mit einem zweiten Kommando das erste herunter gefahren. Daher "stürzt" der Prozess mit dem du dein Programm gestartet hast ab.

Sollte es aber nicht denn auf der Konsole muss man das Programm ebenfalls auf diese Weise beenden und da exitet es mit 0 wie man mit strace ziemlich gut sehen kann.
Code:
....
clone(child_stack=0x7fb688e88ff0, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x7fb688e899d0, tls=0x7fb688e89700, child_tidptr=0x7fb688e899d0) = 4528
futex(0x7fb688e899d0, FUTEX_WAIT, 4528, NULL) = 0
exit_group(0)                           = ?
+++ exited with 0 +++

ChrisJumper wrote:
Ich finde das passt ganz gut. Am besten du schaust mal wie das Programm verfährt, ob es selber seine Subroutinen startet und verwaltet. Du kannst es ja auch ein wenig Observieren beim Start in einer Konsole. Forkt es, legt es eine PID-File an. Gibt es Konfigurationen dafür und so weiter. Mit einer PID könntest du das zumindest auch bei Systemd anders lösen. Finden sich weitere Hinweise in der gestarteten jar-Datei oder ein anderer Befehl zum beenden des Prozesses?

Ich bin mir jetzt nicht ganz sicher aber wenn pstree sowas anzeigt dann forkt der Prozess wohl wirklich:
Code:
           ├─konsole(846)─┬─bash(855)───strace(5215)───java(5215)─┬─mongod(5215)─┬─{mongod}(5215)
           │              │                                       │              ├─{mongod}(5215)
           │              │                                       │              ├─{mongod}(5215)
           │              │                                       │              ├─{mongod}(5215)
           │              │                                       │              ├─{mongod}(5215)
           │              │                                       │              ├─{mongod}(5215)
           │              │                                       │              ├─{mongod}(5215)
           │              │                                       │              ├─{mongod}(5215)
           │              │                                       │              ├─{mongod}(5215)
           │              │                                       │              ├─{mongod}(5215)
           │              │                                       │              ├─{mongod}(5215)
           │              │                                       │              ├─{mongod}(5215)
           │              │                                       │              └─{mongod}(5215)
           │              │                                       ├─{java}(5215)
           │              │                                       ├─{java}(5215)
           │              │                                       ├─{java}(5215)
           │              │                                       ├─{java}(5215)
           │              │                                       ├─{java}(5215)
           │              │                                       ├─{java}(5215)
           │              │                                       ├─{java}(5215)
           │              │                                       ├─{java}(5215)
           │              │                                       ├─{java}(5215)
           │              │                                       ├─{java}(5215)
           │              │                                       ├─{java}(5215)
           │              │                                       ├─{java}(5215)
           │              │                                       ├─{java}(5215)
           │              │                                       ├─{java}(5215)
           │              │                                       ├─{java}(5215)
           │              │                                       ├─{java}(5215)
           │              │                                       ├─{java}(5215)
           │              │                                       ├─{java}(5215)
           │              │                                       ├─{java}(5215)
           │              │                                       ├─{java}(5215)
           │              │                                       ├─{java}(5215)
           │              │                                       ├─{java}(5215)
           │              │                                       ├─{java}(5215)
           │              │                                       ├─{java}(5215)
           │              │                                       ├─{java}(5215)
           │              │                                       ├─{java}(5215)
           │              │                                       ├─{java}(5215)
           │              │                                       ├─{java}(5215)
           │              │                                       ├─{java}(5215)
           │              │                                       ├─{java}(5215)
           │              │                                       ├─{java}(5215)
           │              │                                       ├─{java}(5215)
           │              │                                       ├─{java}(5215)
           │              │                                       ├─{java}(5215)
           │              │                                       ├─{java}(5215)
           │              │                                       ├─{java}(5215)
           │              │                                       ├─{java}(5215)
           │              │                                       └─{java}(5215)

Ich werde das Servicefile mal auf forking umstellen und sehen was dann passiert.

Zum verhalten der Java-App möchte ich noch sagen das sie sich auch auf der Konsole nicht von selbst in den Hintergrund versetzt, sie verhält sich eher wie cp, rm und so weiter.
Hier noch die wirklich sehr kurze Kurzanleitung: http://shschmid.dyndns.ch/owncloud/public.php?service=files&t=94d39bab068ebc4fb7dd05fadd9132d1 ;)

EDIT:
Also das mit dem forking in der service Datei war keine gute Idee dann versucht systemd ewig das Programm zu starten bis irgendwann ein Timeout alles abwürgt. Mal sehen ob sich im Forum von UniFi eine bessere Möglichkeit finden lässt dieses Ding zu starten oder zumindest mal eine Auflistung welche Kommandos die ace.jar kennt.
_________________
GPG: 0x3FC78AEE51E5FB95
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Deutsches Forum (German) All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum