Cómo obtener sólo el IDENTIFICADOR de proceso para un determinado nombre de proceso en linux?

ps -ef|grep java    
test 31372 31265  0 13:41 pts/1    00:00:00 grep java

Basado en el proceso de identificación voy a escribir algo de lógica. Así que ¿cómo puedo obtener sólo el identificador de proceso para un proceso específico nombre.

Programa de ejemplo:

PIDS= ps -ef|grep java
if [ -z "$PIDS" ]; then
echo "nothing"
else
mail [email protected].com
fi
InformationsquelleAutor openquestion | 2014-09-09

6 Comentarios

  1. 63

    Puede utilizar:

    ps -ef | grep '[j]ava'

    O si pgrep está disponible, entonces mejor usar:

    pgrep -f java
    • Traté de ambos comandos , pero pgrep está trabajando de lo que me esperaba.Pero primero ps -ef | grep '[j]ava' no funciona.
    • Como he dicho pgrep es mucho más fiable para utilizar si se encuentra disponible. ps de comandos y sus opciones están muy dependiente de la plataforma.
    • FYI pgrep trabajado en mi Mac OSX ProductName: Mac OS X ProductVersion: 10.13.6 BuildVersion: 17G65
    • En caso de tener varios procesos, puede especificar el delimitador con -d y luego hacer algo de desdoblamiento: pgrep -d ";" -f ssh le dará toda la ssh proceso PID separados por ;; para obtener el número, utilice -c o --count.
  2. 63

    Puede canalizar su salida a awk para imprimir sólo el PID. Por ejemplo:

    ps -ef | grep nginx | awk '{print $2}'
    9439
  3. 38

    Usar este: ps -C <name> -o pid=

    • ¿Por qué esto es rechazada? No sólo parece funcionar, pero lo hace usando el comando deseado ps, y no tubo filtros. En mi caso, no puedo utilizar tubos (razones..), así que esto fue un salvavidas. Usted podría pasar un día entero leyendo la página man de PS… gracias @ventsyv
    • Tal vez porque no es muy portátil, pero de nuevo las otras soluciones que no lo son tanto, y a la pregunta original, fue etiquetado con Redhat Linux. Acaba de pasar a ver una confirmación por parte de uno de mis ingenieros que necesitan para tener un portátil para detectar un proceso java en OSX, Linux RHEL y AIX, y esto es lo que ocurrió: ps -A -o pid,args | grep \[j]ava.
  4. 7

    Este comando ignorar grep proceso, y acabo de volver de PID:

    ps -ef | grep -v grep | grep java | awk '{print $2}'

Dejar respuesta

Please enter your comment!
Please enter your name here