Estoy buscando una sola línea que devuelva el pid de un proceso en ejecución.
Actualmente tengo:
ps -A -o pid,cmd|grep xxx|head -n 1
Y esto devuelve el puño pid, command
. Solo necesito el primer número de la salida e ignoro el resto. Supongo sed
o awk
ayudaría aquí, pero mi experiencia con ellos es limitada.
Además, esto tiene otro problema, devolverá el pid de grep si xxx no se está ejecutando.
Es realmente importante tener una sola línea, ya que quiero reutilizar la salida para hacer otra cosa, como matar ese proceso.
Respuestas:
Si solo desea el pid del proceso, puede utilizarlo
pgrep
si está disponible.pgrep <command>
devolverá el pid del comando (o la lista de pids en caso de que se esté ejecutando más de una instancia del comando, en cuyo caso puede usarhead
u otros comandos apropiados) ¡Espero que esto ayude!
fuente
kill `pgrep xxx`
pkill
.Solo se necesita un comando más; solo desea el primer campo de una línea de valores separados por espacios:
Bueno dos. Agregué otro grep para eliminar grep de la salida.
fuente
Solo usa pgrep, es mucho más sencillo
Lo anterior selecciona el proceso más antiguo con el nombre exacto
fuente
pkill
(con los mismos argumentos) sería la opción más directa.pidof xxx
bastará en linuxfuente
Ejecutando en Cygwin, así que no puedo usar -A y -o, pero algo como esto:
fuente
puedes hacer algo como
entonces xxx debe ser el nombre del proceso y no recogerá grep debido al ancla ^
fuente