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
Puede utilizar:
O si
pgrep
está disponible, entonces mejor usar:ps -ef | grep '[j]ava'
no funciona.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.pgrep
trabajado en miMac OSX ProductName: Mac OS X ProductVersion: 10.13.6 BuildVersion: 17G65
-d
y luego hacer algo de desdoblamiento:pgrep -d ";" -f ssh
le dará toda lassh
proceso PID separados por;
; para obtener el número, utilice-c
o--count
.Puede canalizar su salida a awk para imprimir sólo el PID. Por ejemplo:
Usar este:
ps -C <name> -o pid=
ps -A -o pid,args | grep \[j]ava
.Este comando ignorar grep proceso, y acabo de volver de PID:
¿por qué no pidof ?
devolverá una lista de pids la coincidencia en el nombre del proceso
https://linux.die.net/man/8/pidof