Jump to content

MinecraftServer mit Zugewiesener Pidnummer


Squall

Empfohlene Beiträge

Hallo ich habe mal eine Spezielle frage:
Ist es möglich unter Windows über Javaparameter einen Minecraftserver mit zugewiesener Pidnummer zu starten.

Sinn und Zweck:
Beispiel Ich starte auf meinem Windowserver 2 Minecraftserver.
Dann erhalte ich ja wenn ich über die Commandozeile sprich über die cmd.exe über TaskList die Prozesse angezeigt.
dort würden dann beispielsweise folgendes Stehen:

Zitat

java.exe                     15308 RDP-Tcp#52                 2    26.372.788 K
java.exe                     12840 RDP-Tcp#52                 2     2.393.008 K

starte ich jetzt aber keinen Minecraftserver sondern eine andere Java anwendung würde da ebefalls
 

Zitat

java.exe                     11340 RDP-Tcp#52                 2     1.393.008 K


Sinvoll wäre es wenn ich schon beim ausführen des Minecraftservers ihm eine Pidnummer vergeben könnte sodas mein Statusscript den richtigen prozess bzw prozesse durch Tasklist rausfiltern kann.
Sodass durch das stoppen auch der richtige prozess gestoppt wird. und nicht versehentlich eine Java anwendung...

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Die PID wird vom Betriebssystem vergeben und kann nicht geändert/selbst bestimmt werden.

 

> Sodass durch das stoppen auch der richtige prozess gestoppt wird. und nicht versehentlich eine Java anwendung...

Den Prozess einfach abzuschießen ist nicht der richtige Weg, da hier die Welt nicht gespeichert wird und einem Absturz gleich kommt.
Normalerweise wird das über den "stop"-Befehl in die Konsole geschrieben, über ein Plugin getriggert  oder über RCON remote ausgeführt. https://wiki.vg/RCON

Link zu diesem Kommentar
Auf anderen Seiten teilen

Das hab ich mittlerweile auch festgestellt bzw gelesen das es besser ist in zahlreichen foren.
Aber was ist denn wenn sich der server durch Stop nicht beenden lässt also wenn er festgefahren ist etc
Ich will meinen nutzern nur die Möglichkeit bieten im ernstfall auch über taskkill den server zu killen.

Ich bin ja seit monaten dabei einen Minecraftbot zu programmieren der einen Server über Rcon etc verwaltet.
Dort habe ich halt nur im extremfall die ermittlung der PiD durch einen Prozess,bat etc gestattet:

Durch dieses Kleine script in der Bat:
 

Zitat

@echo on
for /f "tokens=2" %%a in ('tasklist^|find /i "java.exe"') do (set pid=%%a)
echo %pid% > server.pid

Wird die PID der Jeweiligen java anwendung in eine Server.pid file geschrieben die dann der Bot auslesen kann bzw verwenden kann.
Bei diesem kleinen script darf aber keine weitere Java Anwenung laufen das Script sucht nähmlich einen Zuflällige anwendung die mit der java.exe läuft und ermittelt dadurch die PID
Sollten mehrere Java anwendungen im Hintergrund laufen kann es zur falschen ermittlung führen.

Dies steht auch in der Readme.md auf meinem Github repo.

Link zu diesem Kommentar
Auf anderen Seiten teilen

In diesem Fall macht man das dann so, dass die Anwendung, die den Server bzw. den Java-Prozess startet, auch die PID vom Java-Prozess übermittelt, die er dann verwaltet.
Jene Anwendung kann dann auch stdin vom Server passend umleiten, um Befehle in die Konsole zu schreiben.


Batch kann das nicht selbst AFAIK, aber PowerShell kann das:

$p = Start-Process -PassThru -FilePath java.exe -ArgumentList @("-jar", "C:\Server\server.jar")
Write-Host "PID: $($p.Id)"

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde dich hier an.

Jetzt anmelden
×
×
  • Neu erstellen...
B
B