GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo hacer que solo el usuario, el pid y el comando se ejecuten para un proceso específico? (Ubuntu 11.10)

Supongo que estás buscando el argumento -o:

-o formato:

format.format definido por el usuario es un único argumento en forma de lista separada por comas o por espacios en blanco, que permite especificar columnas de salida individuales. Las palabras clave reconocidas se describen en la sección ESPECIFICADORES DE FORMATO ESTÁNDAR a continuación. Se puede cambiar el nombre de los encabezados (ps -o pid,ruser=RealUser -o comm=Command) según se desee. Si todos los encabezados de columna están vacíos (ps -o pid=-o comm=), la línea del encabezado no se mostrará. El ancho de columna aumentará según sea necesario para los encabezados anchos; esto puede usarse para ampliar columnas como WCHAN(ps -o pid,wchan=WIDE-WCHAN-COLUMN -o comm). También se ofrece control de ancho explícito (ps opid,wchan:42,cmd). El comportamiento de ps -o pid=X,comm=Y varía según la personalidad; la salida puede ser una columna denominada "X,comm=Y" o dos columnas denominadas "X" e "Y". Utilice varias opciones cuando tenga dudas. Utilice la variable de entorno PS_FORMAT para especificar un valor predeterminado como desee; DefSysV y DefBSD son macros que se pueden usar para elegir las columnas UNIX o BSD predeterminadas.

Entonces, el comando que desea sería (Ubuntu):

ps -o uid,pid,cmd -ef|grep python

bajo OpenSolaris el comando es:

ps -o ruser,pid,comm -ef|grep python

El más simple probablemente sería:

$ ps o uid=,pid=,cmd= -C python
1000 26126 python

De esa forma obtienes todo directamente de ps y no es necesario analizar nada.

Desde el ps página man:

-o formato

Formato definido por el usuario. El formato es un único argumento en forma de lista separada por comas o espacios en blanco, que ofrece una forma de especificar columnas de salida individuales. [...] Los encabezados se pueden renombrar (ps -o pid,ruser=RealUser -o comm=Command) como se desee. Si todos los encabezados de las columnas están vacíos (ps -o pid=-o comm=), la línea del encabezado no aparecerá.

-C cmdlist
     Select by command name.  This selects the processes whose executable 
     name is given in cmdlist.

El -C la opción funcionará si está ejecutando python interactivamente, no si Python está ejecutando un script. En ese caso deberías usar -C scriptname.py en su lugar.


ps -eo user,pid,cmd | grep [p]ython

Ejemplo:

$ ps -eo user,pid,cmd | grep [p]ython
root      1056 /usr/bin/python3 /usr/bin/networkd-dispatcher --run-startup-triggers
root      1735 /usr/bin/python3 /usr/bin/fail2ban-server -xf start
user     16613 /usr/bin/python3 /usr/share/system-config-printer/applet.py

Explicación:

  • -e todos los procesos
  • -o formato definido por el usuario
  • user,pid,cmd Mostrar usuario, ID de proceso, columnas de comando

Nota: si usas -f con -o como han sugerido otros, es posible que obtenga errores. Esto se debe a que ambos parámetros controlan el formato de salida y solo se debe usar uno de ellos:

$ ps --help | grep -A 2 "output format"
*********** output format **********
-o,o user-defined  -f full
-j,j job control   s  signal

Linux
  1. Cómo ejecutar el comando "buscar" solo en el directorio actual y no en los subdirectorios

  2. ¿Cómo pasar los argumentos de la línea de comando a un proceso en ejecución en sistemas Unix/Linux?

  3. ¿Cómo hago para que mi servidor web Golang se ejecute en segundo plano?

  4. ¿Cómo ejecutar un comando como un usuario específico en un script de inicio?

  5. ¿Cómo puedo obtener la fecha y la hora actuales en la terminal y establecer un comando personalizado en la terminal para ello?

Cómo ejecutar un comando durante un tiempo específico en Linux

Cómo encontrar el PID y PPID de un proceso en Linux

Un gran cambio para Samba en Ubuntu 22.04 y cómo evitarlo

Cómo instalar y usar el comando de pantalla Ubuntu 20.04

Cómo comenzar e instalar Wine para Ubuntu

¿Cómo usar nohup para continuar ejecutando un comando después de que el usuario cierre la sesión?