colvinco commented on code in PR #1328:
URL: https://github.com/apache/solr/pull/1328#discussion_r1096021700


##########
solr/bin/solr:
##########
@@ -2158,6 +2158,35 @@ function mk_writable_dir() {
   fi
 }
 
+# Check whether at least one of lsof/netstat/ss are available
+function get_port_tool() {
+  for tool in 'lsof' 'netstat' 'ss'; do
+      which $tool &> nul
+      if [[ $? -eq 0 ]]; then
+        echo $tool
+        return
+      fi
+  done
+}
+
+# Will get the PID of the java process running on the specified port, if one 
is running
+# Otherwise empty result. Use get_port_tool to check whether lsof/ss/netstat 
is installed first
+function check_port_in_use() {
+  local port=$1
+
+  case $(get_port_tool) in
+    lsof)
+      lsof -iTCP:${port} 2>/dev/null | grep "LISTEN" | grep -Eow 
"java\s*?[0-9]+" | grep -Eow [0-9]+
+      ;;
+    ss)
+      ss -ntpa 2>/dev/null | grep ":${port} " | grep 'LISTEN ' | grep -Eow 
"\"java\",(pid=)?[0-9]+?" | grep -Eow "[0-9]+"
+      ;;
+    netstat)
+      netstat -nlp 2>/dev/null | grep ":${port} " | grep -Eow " [0-9]+/java" | 
grep -Eow "[0-9]+"
+      ;;

Review Comment:
   Right yep. 
   
   I see `ss` supports filtering to listening sockets and filtering by ports - 
`ss -l -at '( sport = :8983 )'`, but I don't know whether those options have 
been standard for a long time or not, but I also can't see anything suggesting 
that they're new.
   The `netstat` `-l` is already filtering to listen, but it doesn't seem like 
there's an explicit port filter for it.
   
   I'll change the `ss` command to use those options



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to