Tengo un script donde comprueba si un paquete está instalado o no y si el puerto 8080 está siendo utilizado por un proceso en particular o no. No tengo experiencia con bash, así que hice algo como esto:
if dpkg -s net-tools; then
if netstat -tlpn | grep 8080 | grep java; then
echo "Shut down server before executing this script"
exit
fi
else
echo "If the server is running please shut it down before continuing with the execution of this script"
fi
# the rest of the script...
Sin embargo, cuando se ejecuta el script, obtengo tanto las salidas dpkg -s net-toolscomo las netstat -tlpn | grep 8080 | grep javasalidas en el terminal, y no quiero eso, ¿cómo puedo ocultar la salida y simplemente seguir con el resultado de la ifs?
Además, ¿hay una forma más elegante de hacer lo que estoy haciendo? ¿Y hay una manera más elegante de saber qué proceso está usando el puerto 8080 (no solo si se está usando), si lo hay?

grep -q, y la nueva fiesta&> ...como sinónimo de> ... 2>&1netstat. ¿Hay alguna forma de que yo pueda ocultar eso también?lsof -i :<portnumnber>debería poder hacer algo similar a lo que quieres.fuente
fuser -n tcp 8080, cuya salida puede ser más fácil de analizar.Si bien el vaciado de la salida
/dev/nulles probablemente la forma más fácil, a veces/dev/nulltiene permisos de archivo establecidos para que no root no pueda vaciar la salida allí. Entonces, otra forma no raíz de hacer esto es medianteEsta
grepconfiguración doble encuentra las líneas que coinciden conabcellas y, dado que-ose establece SOLO,abcse imprime y solo una vez debido a-m 1. Luego, la salida que está vacía oabcse envía a grep para encontrar solo las partes de la cadena que coinciden123y, dado que el último comando solo generaabcla cadena vacía, se devuelve. ¡Espero que ayude!fuente