1 votos

salida inesperada de `lsof -a

Mi lsof la salida del comando es correcta mientras que la aplicación que estoy rastreando con lsof -a está en marcha. En cuanto salgo de esa aplicación, se repite la misma lsof -a muestra los resultados de cada proceso que tiene una conexión ESTABLECIDA.

lsof -lnPO -i -sTCP:ESTABLISHED -a -p "$(pgrep -d, qbittorrent)" +c0

Al cerrar qbittorrent muestra todas las conexiones que están "ESTABLISHED".

Quiero resultados para conexiones qbittorrent ESTABLECIDAS y cuando no hay ninguna, ninguna conexión.

Estoy mostrando esta salida a través de GeekTool en el Escritorio. Se ejecuta como un shell script.

nice -n 9 /Users/john/ShellScripts/GeekTool/qBT-Activity.sh

3voto

Si pgrep no encuentra ninguna coincidencia, devuelve una cadena vacía que aparentemente desencadena lsof para devolver todas las conexiones establecidas.

En Bash, prueba

lsof -lnPO -i -sTCP:ESTABLISHED -a \
    -p "$(p=$(pgrep -d, qbittorrent); echo ${p:-9999999999999999})" \
    +c0

en su lugar (que sustituye a un improbable "pid" si no hay qbittorrent se está ejecutando).

0voto

John Puntos 16

@nohillside ¡Gracias por tu solución! He encontrado un método probando el estado de salida. No sé cuál es más "eficiente".

Ahora con /usr/bin/pgrep y no /usr/local/bin/pgrep

my_func() {
if /usr/bin/pgrep -q qbittorrent
then
  lsof -lnPO -a -i -sTCP:ESTABLISHED -a -p "$(/usr/bin/pgrep qbittorrent)" +c0
fi
}

Lo contrario (prueba de 1 código de salida)

my_func() {
if ! /usr/bin/pgrep -q qbittorrent
then
  return
else
  lsof -lnPO -a -i -sTCP:ESTABLISHED -a -p "$(/usr/bin/pgrep qbittorrent)" +c0
fi
}

-q suprime stdout, pero sólo en MacOS instalado pgrep y desafortunadamente no la versión proctools de pgrep

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X