From eba5e6a7d16974771e3b19ad069f23ae397b3e77 Mon Sep 17 00:00:00 2001 From: ME1312 Date: Wed, 7 Apr 2021 22:06:13 -0400 Subject: [PATCH] A better terminator for Linux SubServers' child processes now get their very own Session ID in Linux. --- SubServers.Bungee/common/pom.xml | 8 +++----- SubServers.Bungee/pom.xml | 8 +++----- .../src/net/ME1312/SubServers/Bungee/Host/Executable.java | 6 +++++- SubServers.Client/Bukkit/pom.xml | 6 ++---- SubServers.Client/Common/pom.xml | 6 ++---- SubServers.Client/Sponge/pom.xml | 6 ++---- SubServers.Client/Universal/pom.xml | 4 ++-- SubServers.Client/pom.xml | 4 ++-- SubServers.Console/pom.xml | 4 +--- SubServers.Creator/pom.xml | 4 ++-- SubServers.Host/pom.xml | 8 +++----- .../net/ME1312/SubServers/Host/Executable/Executable.java | 6 +++++- SubServers.Sync/pom.xml | 8 +++----- pom.xml | 4 ++-- 14 files changed, 37 insertions(+), 45 deletions(-) diff --git a/SubServers.Bungee/common/pom.xml b/SubServers.Bungee/common/pom.xml index 48baca11..fe55c80b 100644 --- a/SubServers.Bungee/common/pom.xml +++ b/SubServers.Bungee/common/pom.xml @@ -1,7 +1,5 @@ - + 4.0.0 net.ME1312.SubServers @@ -30,13 +28,13 @@ net.ME1312.Galaxi GalaxiUtil - 21w09e + 21w15a provided net.ME1312.Galaxi GalaxiEngine - 21w09e + 21w15a provided diff --git a/SubServers.Bungee/pom.xml b/SubServers.Bungee/pom.xml index 536fd566..a666b21f 100644 --- a/SubServers.Bungee/pom.xml +++ b/SubServers.Bungee/pom.xml @@ -1,7 +1,5 @@ - + 4.0.0 net.ME1312.SubServers @@ -30,14 +28,14 @@ net.ME1312.Galaxi GalaxiUtil - 21w09e + 21w15a compile true net.ME1312.Galaxi GalaxiEngine - 21w09e + 21w15a provided diff --git a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/Executable.java b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/Executable.java index 64f7db93..c8c7fb14 100644 --- a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/Executable.java +++ b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/Executable.java @@ -25,11 +25,13 @@ public class Executable { exec = '\"' + System.getProperty("java.home") + File.separator + "bin" + File.separator + "java" + '\"' + exec.substring(4); String[] cmd; - if (System.getProperty("os.name").toLowerCase().startsWith("windows")) { + if (Platform.getSystem() == Platform.WINDOWS) { if (gitbash != null && (exec.toLowerCase().startsWith("bash ") || exec.toLowerCase().startsWith("sh "))) exec = '"' + gitbash + ((gitbash.endsWith(File.separator))?"":File.separator) + "bin" + File.separatorChar + "sh.exe\" -lc \"" + exec.replace("\\", "/\\").replace("\"", "\\\"").replace("^", "^^").replace("%", "^%").replace("&", "^&").replace("<", "^<").replace(">", "^>").replace("|", "^|") + '"'; cmd = new String[]{"cmd.exe", "/q", "/c", '"'+exec+'"'}; + } else if (Platform.getSystem() == Platform.LINUX) { + cmd = new String[]{"setsid", "-w", "sh", "-lc", exec}; } else { cmd = new String[]{"sh", "-lc", exec}; } @@ -86,6 +88,8 @@ public class Executable { if (pid != null) try { if (Platform.getSystem() == Platform.WINDOWS) { Runtime.getRuntime().exec(new String[]{"taskkill.exe", "/T", "/F", "/PID", pid.toString()}).waitFor(); + } else if (Platform.getSystem() == Platform.LINUX) { + Runtime.getRuntime().exec(new String[]{"bash", "-c", "kill -9 $(ps -o pid= --sid $(ps -o sid= --pid " + pid + "))"}).waitFor(); } } catch (IOException | InterruptedException e) {} diff --git a/SubServers.Client/Bukkit/pom.xml b/SubServers.Client/Bukkit/pom.xml index b37d0dd6..d04e4a96 100644 --- a/SubServers.Client/Bukkit/pom.xml +++ b/SubServers.Client/Bukkit/pom.xml @@ -1,7 +1,5 @@ - + 4.0.0 net.ME1312.SubServers @@ -48,7 +46,7 @@ net.ME1312.Galaxi GalaxiUtil - 21w09e + 21w15a compile true diff --git a/SubServers.Client/Common/pom.xml b/SubServers.Client/Common/pom.xml index 52b52183..5130e649 100644 --- a/SubServers.Client/Common/pom.xml +++ b/SubServers.Client/Common/pom.xml @@ -1,7 +1,5 @@ - + 4.0.0 net.ME1312.SubServers @@ -20,7 +18,7 @@ net.ME1312.Galaxi GalaxiUtil - 21w09e + 21w15a provided diff --git a/SubServers.Client/Sponge/pom.xml b/SubServers.Client/Sponge/pom.xml index b2c21cc6..626a928d 100644 --- a/SubServers.Client/Sponge/pom.xml +++ b/SubServers.Client/Sponge/pom.xml @@ -1,7 +1,5 @@ - + 4.0.0 net.ME1312.SubServers @@ -30,7 +28,7 @@ net.ME1312.Galaxi GalaxiUtil - 21w09e + 21w15a compile true diff --git a/SubServers.Client/Universal/pom.xml b/SubServers.Client/Universal/pom.xml index 5b965cb5..603e8297 100644 --- a/SubServers.Client/Universal/pom.xml +++ b/SubServers.Client/Universal/pom.xml @@ -1,5 +1,5 @@ - + + 4.0.0 net.ME1312.SubServers diff --git a/SubServers.Client/pom.xml b/SubServers.Client/pom.xml index 945225b2..d8662782 100644 --- a/SubServers.Client/pom.xml +++ b/SubServers.Client/pom.xml @@ -1,5 +1,5 @@ - + + 4.0.0 net.ME1312.SubServers diff --git a/SubServers.Console/pom.xml b/SubServers.Console/pom.xml index e435e247..54756712 100644 --- a/SubServers.Console/pom.xml +++ b/SubServers.Console/pom.xml @@ -1,7 +1,5 @@ - + 4.0.0 net.ME1312.SubServers diff --git a/SubServers.Creator/pom.xml b/SubServers.Creator/pom.xml index eee22dfd..e541d76e 100644 --- a/SubServers.Creator/pom.xml +++ b/SubServers.Creator/pom.xml @@ -1,5 +1,5 @@ - + + 4.0.0 net.ME1312.SubServers diff --git a/SubServers.Host/pom.xml b/SubServers.Host/pom.xml index 32130209..67aa94a8 100644 --- a/SubServers.Host/pom.xml +++ b/SubServers.Host/pom.xml @@ -1,7 +1,5 @@ - + 4.0.0 net.ME1312.SubServers @@ -33,14 +31,14 @@ net.ME1312.Galaxi GalaxiEngine - 21w09e + 21w15a compile true net.ME1312.Galaxi GalaxiUI - 21w09e + 21w15a runtime true diff --git a/SubServers.Host/src/net/ME1312/SubServers/Host/Executable/Executable.java b/SubServers.Host/src/net/ME1312/SubServers/Host/Executable/Executable.java index 07025b7e..4fc882ca 100644 --- a/SubServers.Host/src/net/ME1312/SubServers/Host/Executable/Executable.java +++ b/SubServers.Host/src/net/ME1312/SubServers/Host/Executable/Executable.java @@ -25,11 +25,13 @@ public class Executable { exec = '\"' + System.getProperty("java.home") + File.separator + "bin" + File.separator + "java" + '\"' + exec.substring(4); String[] cmd; - if (System.getProperty("os.name").toLowerCase().startsWith("windows")) { + if (Platform.getSystem() == Platform.WINDOWS) { if (gitbash != null && (exec.toLowerCase().startsWith("bash ") || exec.toLowerCase().startsWith("sh "))) exec = '"' + gitbash + ((gitbash.endsWith(File.separator))?"":File.separator) + "bin" + File.separatorChar + "sh.exe\" -lc \"" + exec.replace("\\", "/\\").replace("\"", "\\\"").replace("^", "^^").replace("%", "^%").replace("&", "^&").replace("<", "^<").replace(">", "^>").replace("|", "^|") + '"'; cmd = new String[]{"cmd.exe", "/q", "/c", '"'+exec+'"'}; + } else if (Platform.getSystem() == Platform.LINUX) { + cmd = new String[]{"setsid", "-w", "sh", "-lc", exec}; } else { cmd = new String[]{"sh", "-lc", exec}; } @@ -86,6 +88,8 @@ public class Executable { if (pid != null) try { if (Platform.getSystem() == Platform.WINDOWS) { Runtime.getRuntime().exec(new String[]{"taskkill.exe", "/T", "/F", "/PID", pid.toString()}).waitFor(); + } else if (Platform.getSystem() == Platform.LINUX) { + Runtime.getRuntime().exec(new String[]{"bash", "-c", "kill -9 $(ps -o pid= --sid $(ps -o sid= --pid " + pid + "))"}).waitFor(); } } catch (IOException | InterruptedException e) {} diff --git a/SubServers.Sync/pom.xml b/SubServers.Sync/pom.xml index 2542f83c..a9312641 100644 --- a/SubServers.Sync/pom.xml +++ b/SubServers.Sync/pom.xml @@ -1,7 +1,5 @@ - + 4.0.0 net.ME1312.SubServers @@ -30,14 +28,14 @@ net.ME1312.Galaxi GalaxiUtil - 21w09e + 21w15a compile true net.ME1312.Galaxi GalaxiEngine - 21w09e + 21w15a provided diff --git a/pom.xml b/pom.xml index 2de56555..9a76311a 100644 --- a/pom.xml +++ b/pom.xml @@ -1,5 +1,5 @@ - + + 4.0.0 net.ME1312.SubServers